当我尝试将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;。
答案 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)