#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
istringstream iss("2.832 1.3067d nana 1.678");
double num = 0;
while(iss >> num || !iss.eof()) {
if(iss.fail()) {
iss.clear();
string dummy;
iss >> dummy;
continue;
}
cout << num << endl;
}
return 0;
}
使用stringstream打印数字但是当我包括时,例如1.3067d,但它仍然打印1.3067。我该如何打印这个号码?我希望它只打印2.832和1.678。
答案 0 :(得分:0)
如果您使用流提取运算符从流中提取values
,则流将尽可能多地读取它可以解释为double
并在达到某些数据时停止它无法合并。在您的情况下,如果您尝试将double
作为double读取,则流将成功读取1.3067d
作为双精度并将1.3067
留下以供下一个操作读取。
由于字符串中有空格分隔的标记,因此解决此问题的一种方法是将每个标记作为字符串读取,然后,在完成此操作后,查看您提取的标记是否可以转换为{{1}没有错误。这是实现此目的的一种方法:
d