C++;清除字符串以进行int转换 据我所知,C++中把字符串转换成int的常用方法是使用sStruts:< /P> std::string inputString = "12 34"; std::istringstream istr(inputString); int i1, i2; istr >> i1 >> i2;

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

但是,如果我想确保我的代码对任何输入都有效,那么问题是在字符串或0的输入之间做出决定:

   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>变量有什么想法?对不起,楠是浮点。把事情搞混了。