在C++中将int转换为等价字符串的最简单方法是什么?我知道两种方法。有没有更简单的方法?

(1)

int a = 10;
char *intStr = itoa(a);
string str = string(intStr);

(2)

int a = 10;
stringstream ss;
ss << a;
string str = ss.str();

当前回答

namespace std
{
    inline string to_string(int _Val)
    {   // Convert long long to string
        char _Buf[2 * _MAX_INT_DIG];
        snprintf(_Buf, "%d", _Val);
        return (string(_Buf));
    }
}

现在可以使用to_string(5)。

其他回答

C++17提供std::to_chars作为一种更高性能的独立于语言环境的替代方案。

使用计数器类型的算法转换为字符串。我从编程Commodore 64计算机中获得了这种技术。它也适用于游戏编程。

你取整数,取每一个10次幂的数字。所以假设整数是950。如果整数等于或大于100000,则减去100000并将字符串中的计数器增加为[“000000”];继续这样做,直到没有更多的数字在位置100000。再降低10次方。如果整数等于或大于10000,则减去10000,并在[“000000”]+1位置增加字符串中的计数器;一直这样做,直到10000位不再有数字。再降低10次方重复该模式

我知道950太小了,不能作为一个例子,但我希望你能理解。

使用普通标准stdio标头,可以将sprintf上的整数强制转换为缓冲区,如下所示:

#include <stdio.h>

int main()
{
    int x = 23;
    char y[2]; // The output buffer
    sprintf(y, "%d", x);
    printf("%s", y)
}

记住根据您的需要(字符串输出大小)注意缓冲区的大小。

我不知道,在纯C++中。但对你提到的内容稍作修改

string s = string(itoa(a));

应该有效,而且很短。

这是另一个简单的方法

char str[100];
sprintf(str, "%d", 101);
string s = str;

sprintf是一种众所周知的将任何数据插入所需格式的字符串的方法。

您可以将char*数组转换为字符串,如第三行所示。