C++ C++;将int转换为字符串时出错
当我尝试将int转换为字符串时,它会产生奇怪的结果,我不知道它来自何处,下面是一个代码片段:C++ C++;将int转换为字符串时出错,c++,string,output,C++,String,Output,当我尝试将int转换为字符串时,它会产生奇怪的结果,我不知道它来自何处,下面是一个代码片段: if (!ss.fail() && !ss.eof()) { ss.clear(); string operand1 = "" + num1; string operand2 = ""; getline(ss,operand2); operand2 = trim(operand2); cout << num1 <
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);
}
我不知道“退出”从何而来,这个词根据输入的不同而变化,“退出”在我输入“3+1”时变成“it”,在我输入“13+2”时变成“ye” 我建议您使用std的strtoul功能。您可以找到一个很好的文档 例如:
static unsigned long stringToInt(const string& str) {
const char* cstr = str.c_str();
char* endPtr = 0;
return ::strtoul(cstr, &endPtr, 0);
}
您可以使用
stringstream
转换string
中的各种类型。我通常使用以下模板来实现这一点:
template <typename T>
static std::string strfrom(T x)
{
std::ostringstream stream;
stream << x;
return stream.str();
}
在标题中写probelm的probelm:)是的。以及缓冲区溢出等问题。(该随机字符串对我来说似乎来自无效内存->UB。)我不确定:是否要将输入int转换为字符串,或创建获取字符串表达式并以字符串形式返回值的计算?
“”+num1
——这不会将整数转换为字符串(事实上,它会导致一个未定义的行为,这就是为什么您会得到奇怪的输出)你必须知道如何正确地将一个整数转换成一个字符串。你有两个粗略的猜测,然后你必须打开一个C++手册并读。<代码> NUM1<代码>是<代码> int >代码>,你将它添加到<代码> const(& char)的逻辑基址(1)。。你意识到这不是将<代码> int >代码的文本翻译附加到字符串中的方法,对吗?你在本质上是在一个conchar缓冲区上做指针数学。或者你可以建议更多类似C++的东西,完全避免Strutl。
static unsigned long stringToInt(const string& str) {
const char* cstr = str.c_str();
char* endPtr = 0;
return ::strtoul(cstr, &endPtr, 0);
}
template <typename T>
static std::string strfrom(T x)
{
std::ostringstream stream;
stream << x;
return stream.str();
}
i_str = strfrom<int>(i)