在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();
在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();
当前回答
使用字符串流进行数字转换是危险的!
请参阅std::ostream::operator<<,其中告诉operator<插入格式化输出。
根据您当前的语言环境,大于三位数的整数可以转换为四位数的字符串,并添加额外的千位分隔符。
例如,int=1000可以转换为字符串1.001。这可能会使比较操作根本不起作用。
所以我强烈建议使用std::to_string方法。它更容易,做你期望的事情。
从std::到_string:
C++17提供std::to_chars作为一种更高性能的独立于语言环境的替代方案。
其他回答
Use:
#include<iostream>
#include<string>
std::string intToString(int num);
int main()
{
int integer = 4782151;
std::string integerAsStr = intToString(integer);
std::cout << "integer = " << integer << std::endl;
std::cout << "integerAsStr = " << integerAsStr << std::endl;
return 0;
}
std::string intToString(int num)
{
std::string numAsStr;
bool isNegative = num < 0;
if(isNegative) num*=-1;
do
{
char toInsert = (num % 10) + 48;
numAsStr.insert(0, 1, toInsert);
num /= 10;
}while (num);
return isNegative? numAsStr.insert(0, 1, '-') : numAsStr;
}
使用字符串流进行数字转换是危险的!
请参阅std::ostream::operator<<,其中告诉operator<插入格式化输出。
根据您当前的语言环境,大于三位数的整数可以转换为四位数的字符串,并添加额外的千位分隔符。
例如,int=1000可以转换为字符串1.001。这可能会使比较操作根本不起作用。
所以我强烈建议使用std::to_string方法。它更容易,做你期望的事情。
从std::到_string:
C++17提供std::to_chars作为一种更高性能的独立于语言环境的替代方案。
使用普通标准stdio标头,可以将sprintf上的整数强制转换为缓冲区,如下所示:
#include <stdio.h>
int main()
{
int x = 23;
char y[2]; // The output buffer
sprintf(y, "%d", x);
printf("%s", y)
}
记住根据您的需要(字符串输出大小)注意缓冲区的大小。
我认为使用stringstream非常简单:
string toString(int n)
{
stringstream ss(n);
ss << n;
return ss.str();
}
int main()
{
int n;
cin >> n;
cout << toString(n) << endl;
return 0;
}
我通常使用以下方法:
#include <sstream>
template <typename T>
std::string NumberToString ( T Number )
{
std::ostringstream ss;
ss << Number;
return ss.str();
}
这里将详细描述。