这是我目前所拥有的
头文件内容如下:
string MyAdd(int A, char B)
{
char C[10];
itoa(A,C,10);
C[1] = '+';
C[2] = B;
C[3] = '\0';
return C;
}
调用程序:
cout << "\n\t\tThe sum of 1 and X is = " << MeLoad.MyAdd(1 ,'X' );
输出在哪里:
The sum of 1 and X is = 1 + X
但它只适用于个位数的整数
所以如果我尝试添加 1000 + X,它仍然会返回 1 + X,我不知道为什么。
有人能指出我正确的方向吗?任何帮助表示赞赏,谢谢。
使用 VS 2010
最佳答案
首先,让我们修复您现有的代码:
您的代码假定 itoa
的输出以字符 1
结束。使用strlen
找到实际的结束位置,然后在那个位置写入,像这样:
itoa(A,C,10);
int p = strlen(C);
C[p++] = '+';
C[p++] = B;
C[p] = '\0';
接下来,让我们考虑一个替代方案:您可以使用 sprintf
将您的代码放在一行中,如下所示:
sprintf(C, "%d+%c", A, B);
最后,让我们将您的代码编写为 C++:
您上面的代码也可能是用 C 语言编写的,因为它没有利用 C++ 功能。上述两种方法都有局限性,因为您必须预先分配某个最大容量的缓冲区 C
。 C++ 提供了一个 stringstream
类,让您不用担心预分配:
string MyAdd(int A, char B) {
stringstream ss;
ss << A << "+" << B;
return ss.str();
}
关于c++ - 如何添加一个多位数的 int 和一个 char,输出将是 int + char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23321811/