c++ - 如何添加一个多位数的 int 和一个 char,输出将是 int + char

标签 c++ visual-studio-2010 char int itoa

这是我目前所拥有的

头文件内容如下:

    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/

相关文章:

c++ - KMP算法和LPS表构建的运行时间

c# - 如何使用 Visual Studio(和/或 ReSharper)从类字段生成构造函数?

.net - GAC 文件夹 - 太多?

visual-studio-2010 - 为什么我的 xml 文档文件总是被锁定?

c - 在 C 中对 char 数组进行操作的递归函数中的段错误

C++:ifstream 作为参数

c++ - 我如何*选择性地*修改用随机数生成的多维数组?

c# - 为什么这个方法每次都返回相同的随机字符串?

c++ - 概念指针数组

将程序转换为使用函数,现在运行时不执行任何操作