2010-04-14 149 views
1

我需要逐個讀取存儲在文件中的不同值。所以我想我可以使用ifstream來打開文件,但由於文件的設置方式是一行可能包含三個數字,另一行包含一個或兩個數字,我不確定如何讀取每個文件數字一個接一個。我正在考慮使用stringstream,但我不確定這是否可行。從文件中讀取多個字符串C++

該文件是這樣的格式。

52500.00  64029.50  56000.00 
65500.00  
53780.00  77300.00  
44000.50  80100.20  90000.00  41000.00  
60500.50  72000.00 

我需要閱讀每個號碼並將其存儲在一個vector

完成此操作的最佳方法是什麼?即使每行都包含不同數量的數字,一次只能讀取一個數字?

+1

數字都是應該在一個大的載體結束,或每一個矢量線? – 2010-04-14 09:46:32

+0

你可以使用fscanf(); – SjB 2010-04-14 09:47:02

+1

你不需要做任何特殊的事情,普通的流提取操作符('>>')會自動跳過所有的空格,所以空格和換行符將被視爲相同。 – tzaman 2010-04-14 09:51:49

回答

6

爲什麼不把它們讀作文件中的數字?

double temp; 
vector<double> vec; 
ifstream myfile ("file.txt"); 

if (myfile.is_open()) { 
    while (myfile >> temp) { 
    vec.push_back(temp); 
    } 
    myfile.close(); 
} 
+0

嗯,我正在做的事情接近這一點,但是,最好是隻讀他們作爲數字。謝謝 – user69514 2010-04-14 09:55:18

1

如果你不關心我建議使用istringstream數字的位置後getline

std::ifstream f("text.txt"); 
std::string line; 
while (getline(f, line)) { 
    std::istringstream iss(line); 
    while(iss) { 
     iss >> num1; 
    } 
} 
0
vector<double> v; 
ifstream input ("filename"); 
for (double n; input >> n;) { 
    v.push_back(n); 
}