对于有些题目的输入数据处理起来有时候要花一些心思。在这里介绍c++的istringstream类帮助大家处理这些数据
1.使用这个类要引入<sstream>这个头文件
2.使用方法
对于这样一个字符串"123 123 145 ,zzz kk,k oo.jjj"
要想用istringstream来处理首先要声明一个这个类的对象
方法:istringstream iss("123 123 145 ,zzz kk,k oo.jjj");
如果想拿到第一个int值,用下面的代码
int i;
iss >> i; cout
<< i <<
endl;
想在拿到另一个int值
int i; iss >> i; cout
<< i <<
endl;
......
对于其他数据类型也是一样的
但是如果字符串是"123,123 145 ,zzz kk,k oo.jjj"
那么要拿到第二个int值的时候就要加上
iss.ignore(1000,',');
下面来解释一下这个函数的两个参数的意思
对第一个参数是一次>>操作最多提取几个字符,第二个参数则是在这次提取中要忽略那些字符
特别注意:这个函数是一次性的。意思是一旦忽略了一次后这个函数的使命就完成了。
3.最后在说明一点就是这个类自动忽略空格
long long fromStringValue(const string &s) {
istringstream i(s);
long long x;
cout << "i : " << i << endl;
cout << "x : " << x << endl;
if(i >> x) {
cout << "x : " << x << endl;
return x;
}
return -1; // if error
}