C ++将int转换为字符串

时间:2013-03-13 02:30:16

标签: string int

我知道这是非常基本的,但我对C ++很新,似乎无法找到答案。我只是想将一些整数转换为字符串。这种方法有效:

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

但是当我需要像这样转换第二个和第三个时:

int b = 13;
stringstream ss;
ss << a;
string str2 = ss.str();

int c = 15;
stringstream ss;
ss << b;
string str3 = ss.str();

我收到此错误:

'std::stringstream ss' previously declared here

我需要以某种方式关闭stringstream吗?我注意到如果我在代码中将它们彼此远离,编译器并不介意,但这似乎不是我应该做的事情。有没有人有建议?

6 个答案:

答案 0 :(得分:9)

您正在尝试重新声明具有相同名称的相同字符串流。您可以像这样修改代码以便工作:

 int b = 13;
stringstream ss2;
ss2 << a;
string str2 = ss2.str();

如果您不想重新声明它,或者像这样:

int b = 13;
ss.str(""); // empty the stringstream
ss.clear();
ss << a;
string str2 = ss.str();

你也可以使用,这要快得多:

int c = 42;
std::string s = std::to_string(c);

答案 1 :(得分:3)

stringstream就像其他任何变量一样。为了使成语无需更改,可以将其放在括号中:

int a = 13;
string str2;
{
    stringstream ss;
    ss << a;
    str2 = ss.str();
} // ss ceases to exist at the closing brace

int b = 15;
string str3;
{
    stringstream ss; // now we can make a new ss
    ss << b;
    str3 = ss.str();
}

从C ++ 11开始,你可以做到

std::string str4 = std::to_string( b );

或(任意类型的c

std::string str5 = ( std::stringstream() << c ).str();

当然还有其他解决方案。

答案 2 :(得分:1)

#include <string>

int a = 10;
std::string s = std::to_string(a);

答案 3 :(得分:1)

您遇到的特定错误告诉您,您无法在同一范围内声明两个名称相同的变量(在您的情况下为ss)。

如果您想要创建新的stringstream,可以将其称为其他内容。

但是还有其他方法可以将int转换为字符串..您可以使用std::to_string()

答案 4 :(得分:0)

请务必声明:

using namespace std;

然后插入代码:

int a = 10;
ostringstream ssa;
ssa << a;
string str = ssa.str();

int b = 13;
ostringstream ssb;
ssb << b;
string str2 = ssb.str();

int c = 15;
ostringstream ssc;
ssc << c;
string str3 = ssc.str();

答案 5 :(得分:0)

我能想到的最简单的方法之一是:

string str = string(itoa(num));