2012-03-11 67 views
0

在文件中,每行都有一對名稱。就像這樣:C++ ifstream字符串

約翰·戴維

安託萬·格爾達

薩拉數學

等等...

我想要做的是那對成一個字符串輸出。像這樣:

string pairs[100]; 
ifstream inFile("duom.txt"); 
int n; //how many pairs 

inFile >> n; 
for(int i=1;i<=n;i++){ 
    inFile >> pairs[i]; 
} 

這不起作用,因爲它會對空間產生反應。

getline(inFile,pairs[i]); 

是不可接受的,因爲它跳過代碼後。

所以我的問題是:是否有可能將這2個名字讀入一個字符串?

+0

[將ifstream中的一行讀入字符串變量]的可能重複(http://stackoverflow.com/questions/6663131/reading-a-line-from-ifstream-into-a-string-variable) – 2012-03-11 17:40:22

回答

3

問題不在於getline,這對你的任務很好,但是索引。你應該從0開始

for(int i=0;i < n;i++){ 
    getline(inFile, pairs[i]); 
} 

編輯:作爲Kerrek SB指出,有可能是一個錯誤。在inFile >> n之後,我們應該跳過換行符:添加一個虛擬getline(inFile, pairs[0]);可以擺脫它。

+2

不過,在混合'getline'和'>>'時必須小心。 – 2012-03-11 17:13:10

+0

添加虛擬工作正常!謝謝 – RnD 2012-03-11 17:48:04