我有一個文本文件,如下所示:的fstream和sstream處理:輸入重複
1 A Rocket-1 1.2
2 B Rocket-2 2.3
3 C Rocket-3 3.4
Invalid Format Line
4 D Rocket-4 4.5
5 E Rocket-5 5.6
正如你所看到的,格式其次是:<int> <char> <string literal> <float>
我想提取從各個數據類型每行並打印它們。我這樣做:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
int main() {
ifstream in;
in.open("input.txt");
if (in) {
while (getline(in, x)) {
istringstream iss(x);
iss >> i >> c >> s >> f;
cout << "\n\nInteger:" << i << ", Character: " << c << ", String: "
<< s << ", Float: " << f << endl << endl;
}
}
else {
cout << "\nError reading input file\n";
}
cin.get();
return 0;
}
輸出是:
Integer:1, Character: A, String: Rocket-1, Float: 1.2
Integer:2, Character: B, String: Rocket-2, Float: 2.3
Integer:3, Character: C, String: Rocket-3, Float: 3.4
Integer:3, Character: C, String: Rocket-3, Float: 3.4
Integer:4, Character: D, String: Rocket-4, Float: 4.5
Integer:5, Character: E, String: Rocket-5, Float: 5.6
正如你可以看到,其中一條線(3)被重複。 每當我有一個無效格式的行,我只想忽略它,順利(沒有崩潰)轉換到下一個有效的格式行。請在我的代碼中建議更改以處理此問題。
@nhgrif - mea culpa。 –