在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();

当前回答

Use:

#define convertToString(x) #x

int main()
{
    convertToString(42); // Returns const char* equivalent of 42
}

其他回答

在C++11中,我们可以使用“to_string()”函数将int转换为字符串:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int x = 1612;
    string s = to_string(x);
    cout << s<< endl;

    return 0;
}

使用字符串流会更容易:

#include <sstream>

int x = 42;          // The integer
string str;          // The string
ostringstream temp;  // 'temp' as in temporary
temp << x;
str = temp.str();    // str is 'temp' as string

或生成函数:

#include <sstream>

string IntToString(int a)
{
    ostringstream temp;
    temp << a;
    return temp.str();
}

使用字符串流进行数字转换是危险的!

请参阅std::ostream::operator<<,其中告诉operator<插入格式化输出。

根据您当前的语言环境,大于三位数的整数可以转换为四位数的字符串,并添加额外的千位分隔符。

例如,int=1000可以转换为字符串1.001。这可能会使比较操作根本不起作用。

所以我强烈建议使用std::to_string方法。它更容易,做你期望的事情。

从std::到_string:

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

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

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)。