我想知道是否有人能告诉我如何追加在C ++中的整数(另一整)。 基本上,如果我有这样一个int值67,我怎么会用4号追加这么整数现在是674? 提前致谢!
Answer 1:
第一个十繁衍的第二位数字电源,并添加其他。
实施例:63和5
63*10=630
630+5 =635
实施例:75和34
75*100=7500
7500+34=7534
int i1=75;
int i2=34;
int dn=ceil(log10(i2+0.001)); //0.001 is for exact 10, exact 100, ...
int i3=i1*ceil(pow(10,dn)); <---- because pow would give 99.999999(for some optimization modes)
i3+=i2;
编辑:字符串版本需要2的int STR转换(这是慢)和1个字符串连接(这是不快)和1个STR为int转换(这是慢)。 上部转换需要2次加法,1对数,2个天花板,1个电源,1个相乘所有这些都可能在CPU进行不接触主存用于获取/子步骤组数据肯定是潜伏期小于字符串版本。 如果3-4字符串由编译器设计存储在SSE寄存器,然后将两者争夺的性能。 因为当一个要忙着计算“功率”的功能,其他是从SSE忙提取字符串,并通过一个把它必要的寄存器之一,并构建在另一个寄存器通过启动加法和乘法。 电源(10,x)函数可以交易10 * 10 * 10 .... X次,纯数学版本再次变快。
如果是可读性,你需要,的EQ-答案是最好的海事组织。
Answer 2:
int appended = std::stoi(std::to_string(i1) + std::to_string(i2));
// error checking left as an exercise
Answer 3:
#include <iostream>
#include <string>
int appendDigit(int base, int append) {
std::string sBase = std::to_string(base);
std::string sAppend = std::to_string(append);
std::string result = sBase + sAppend;
return std::stoi(result);
}
int main() {
int a = 67;
int b = 4;
int c = appendDigit(a,b);
std::cout << c;
}
Answer 4:
算上现有的数的数字,乘以它的10次方,并加入到第二个数字。
Answer 5:
int append_digits(int i1, int i2) {
int result = 0;
while (i1) {
result *= 10;
result += i1 % 10;
i1 /= 10;
}
while (i2) {
result *= 10;
result += i2 % 10;
i2 /= 10;
}
int final_result = 0;
while (result) {
final_result *= 10;
final_result += result % 10;
result /= 10;
}
return final_result;
}
重构,以减少重复代码就留给读者自己练习。
Answer 6:
这里有一个更严重的:
int append_digits(int i1, int i2) {
int i2_copy = i2;
while (i2_copy) {
i1 *= 10;
i2_copy /= 10;
}
return i1 + i2;
}
这避免了浮点数学和字符串转换。
文章来源: How To Append an Integer (with an Integer) in C++