C ++将int转换为string时出错

时间:2013-11-21 16:26:17

标签: c++ string output

当我尝试将int转换为字符串时,会产生奇怪的结果,我不知道它来自何处,这里是一段代码片段:

if (!ss.fail() && !ss.eof()) {
    ss.clear();

    string operand1 = "" + num1;
    string operand2 = "";
    getline(ss,operand2);   
    operand2 = trim(operand2);

    cout << num1 << endl << operand1 << endl;
    return expression_isvalid(operand1) && expression_isvalid(operand2) && operator_isvalid(c);

}

ss是一个字符串流,num1是一个int,而c是一个char。

基本上输入是一个类似于&#34; 1 + 1&#34;的表达式,num1包含它在该表达式中找到的第一个int(使用ss&gt;&gt; num1)

我不能得到的是这部分

string operand1 = "" + num1; // assume input is "1 + 1" so num1 contains the value 1
...
cout << num1 << endl << operand1 << endl; 

输出

1
exit

我不知道&#34;退出&#34;来自,这个词根据输入而变化,&#34;退出&#34;成为&#34;它&#34;当我输入&#34; 3 + 1&#34;和&#34; ye,&#34;当我输入&#34; 13 + 2&#34;。

2 个答案:

答案 0 :(得分:0)

我建议你使用std的 strtoul 功能。 Here你可以找到一份好的文件。

一个例子可能是:

static unsigned long stringToInt(const string& str) {
  const char* cstr = str.c_str();
  char* endPtr = 0;
  return ::strtoul(cstr, &endPtr, 0);
}

答案 1 :(得分:0)

您可以使用stringstream转换string中的各种类型。我通常使用以下模板来做到这一点:

template <typename T>
static std::string strfrom(T x)
{
    std::ostringstream stream;

    stream << x;

    return stream.str();
}

然后将int i转换为string i_str,只需执行:

i_str = strfrom<int>(i)