C++;清除字符串以进行int转换 据我所知,C++中把字符串转换成int的常用方法是使用sStruts:< /P> std::string inputString = "12 34"; std::istringstream istr(inputString); int i1, i2; istr >> i1 >> i2;
但是,如果我想确保我的代码对任何输入都有效,那么问题是在字符串或0的输入之间做出决定:C++;清除字符串以进行int转换 据我所知,C++中把字符串转换成int的常用方法是使用sStruts:< /P> std::string inputString = "12 34"; std::istringstream istr(inputString); int i1, i2; istr >> i1 >> i2;,c++,string,casting,int,C++,String,Casting,Int,但是,如果我想确保我的代码对任何输入都有效,那么问题是在字符串或0的输入之间做出决定: std::string inputString = "TEXT 0"; std::istringstream istr(inputString); int i1, i2; istr >> i1 >> i2; cout << i1 <<" != "<< i2 << endl; std::string in
std::string inputString = "TEXT 0";
std::istringstream istr(inputString);
int i1, i2;
istr >> i1 >> i2;
cout << i1 <<" != "<< i2 << endl;
std::string inputString=“TEXT 0”;
std::istringstream istr(输入字符串);
inti1,i2;
istr>>i1>>i2;
cout您可以使用无效的默认值:
#include<sstream>
#include<limits>
using std::numeric_limits;
int main(){
std::string inputString = "TEXT 0";
std::istringstream istr(inputString);
int i1=numeric_limits<int>::min();
int i2=numeric_limits<int>::min();
std::string tmp;
istr >> i1;
if (i1 == numeric_limits<int>::min()) {
// extraction failed
i1 = 0;
istr.clear(); // clear error flags to allow further extraction
istr >> tmp; // consume the troublesome token
}
// same for i2
}
#包括
#包括
使用std::数值_限制;
int main(){
std::string inputString=“TEXT 0”;
std::istringstream istr(输入字符串);
int i1=数值限制::min();
int i2=数值限制::min();
std::字符串tmp;
istr>>i1;
如果(i1==数值限制::min()){
//提取失败
i1=0;
istr.clear();//清除错误标志以允许进一步提取
istr>>tmp;//使用问题令牌
}
//i2也一样
}
注意:如果numeric\u limits::min()
不能作为有效输入,则该技术有效。至少对我来说,您正在做的决定或(特别是)决定的标准尚不清楚。if(!(istr>>i1>>i2)){/*某些东西没有提取*/}
thx,这个解决方案看起来稳定/干净,他不能使用NaN作为默认值,并将Min作为有效输入吗?@ Dutt,您对C++(代码)INT/CARD>变量有什么想法?对不起,楠是浮点。把事情搞混了。