据我所知,c ++中将String转换为int的常用方法是使用sstream:
std::string inputString = "12 34";
std::istringstream istr(inputString);
int i1, i2;
istr >> i1 >> i2;
但是,如果我想确定,我的代码适用于任何输入,问题是在字符串的输入或0之间做出决定:
std::string inputString = "TEXT 0";
std::istringstream istr(inputString);
int i1, i2;
istr >> i1 >> i2;
cout << i1 <<" != "<< i2 << endl;
我想决定,如果用户输入了一个字符串或零,以便执行进一步的操作。 有没有干净方法来决定这个问题,而不使用lexical cast或atoi? 最好的gegards
答案 0 :(得分:1)
您可以使用无效的默认值:
#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
}
注意:如果numeric_limits<int>::min()
无法成为有效输入,该技术有效