我已經通過一些線程詳細介紹瞭如何標記字符串,但我顯然太厚以至於無法將其建議和解決方案調整到我的程序中。我試圖做的是將大行(5k +)行文件中的每行標記爲兩個字符串。這裏的線樣本:使用變量空白符號化字符串
0 -0.11639404
9.0702948e-05 0.00012207031
0.0001814059 0.051849365
0.00027210884 0.062103271
0.00036281179 0.034423828
0.00045351474 0.035125732
我臺詞,來自其他線程的其他樣本輸入之間尋找不同的是,我有空白的,我要來標記部分之間的可變量。無論如何,這是我的嘗試在分詞:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
ifstream input;
ofstream output;
string temp2;
string temp3;
input.open(argv[1]);
output.open(argv[2]);
if (input.is_open())
{
while (!input.eof())
{
getline(input, temp2, ' ');
while (!isspace(temp2[0])) getline(input, temp2, ' ');
getline (input, temp3, '\n');
}
input.close();
cout << temp2 << endl;
cout << temp3 << endl;
return 0;
}
我已經修剪它一些,因爲麻煩的位在這裏。我遇到的問題是temp2從來沒有看到價值。理想情況下,它應該填充第一列數字,但它不會。相反,它是空白的,temp3填充整行。不幸的是,在我的課程中,我們還沒有學習矢量,所以我不太清楚如何在其他解決方案中實現它們,我已經看到了,並且我不想將代碼複製粘貼到讓事情沒有真正理解它的工作。那麼,我錯過了什麼是非常明顯的/已經得到解答/簡單的解決方案?我想堅持g ++使用的標準庫,如果可能的話。
任何理由'而(輸入>> TEMP2 >> TEMP3)'將無法正常工作? – chris
cin >>和無論哪個輸入>>忽略所有空格,製表符等 – fersarr
我認爲原因是因爲我努力過於簡單時會過度複雜。非常感謝! –