2016-11-28 67 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:在我的想法第二种解决方案是更好的;-)