2016-11-28 68 views
-1

我是新的C++,和我有一個文本文件,它看起來像缺少空間時,函數getline

******Text******* 
A B C 
D E 
******Text******* 

我想在字符串得到的是ABCDE 但我得到AB CDE 失蹤當我跳過該行時,C和D之間的空間。

string arr[1000]; 
ifstream fin; 
string str; 
fin.open("D1.txt"); 
if (!fin.is_open())     
{ 
    cout << "Unable to open file hello.txt." << endl; 
}; 
if (fin) 

{ 
    while(getline(fin, str,'\n')) 
    cout << str; 
} 
+1

'清點<< str;' ->'的cout <<海峽<< 「\ n」;' –

+0

除非是'C'之後和在隨後的一個空間換行符在你的輸入文件中,也不會出現在你的輸出中。這就是您編寫代碼的方式以及處理輸入的方式。 – WhozCraig

+0

C&D之間沒有空間,有一個換行符。 – Dave

回答

1

這是因爲在C和D之間沒有空間,唯一的是「\ n」。 有一些可以解決你的問題的技巧: 1 - 你可以像下面在第一第二行的改變你的文件,並把一個空間:

******Text******* 
A B C 
D E 
******Text******* 

2 - 你改變你的代碼如下:

string arr[1000]; 
ifstream fin; 
string str; 
fin.open("D1.txt"); 
if (!fin.is_open())     
{ 
    cout << "Unable to open file hello.txt." << endl; 
}; 
if (fin) 

{ 
    while(getline(fin, str,'\n')) 
    cout << str <<" "; 
} 

這給每行後面的空間,它解決了你的問題。

PS:在我的想法第二種解決方案是更好的;-)