2015-10-23 76 views
0

我试图运行一个C++代码。我的输入文件有多少行,我试图删除每行中的空格,然后显示。但是,当我运行代码时,输​​出将在单行中出现,即文件的所有行都显示在一行中。C++逐行读取但不能逐行显示输出

请解决我的问题,以便我逐行得到输出。

谢谢。

我试过这段代码。这是我的代码:

int main() 
{ 
    int i = 0, len, j; 
    std::string str; 
    ifstream iFile("g.txt"); 
    while (std::getline(iFile, str) != 0) 
    { 
     len = str.length(); 
     for (i = 0; i < len; i++) 
     { 
      if (str[i] == ' ') 
      { 
       for (j = i; j < len; j++) 
       { 
        str[j] = str[j + 1]; 
       } 
       len--; 
      } 
     } 
     cout << str; 
    } 
} 

回答

2

cout<<str;会写的字符串输出缓冲器,就是这样。下次您将它称为str时,您将写出最后一个str之后的文字。如果你想在自己的行各str那么你可以使用

cout << str << endl; 
//or 
cout <<str << "\n"; 

原因各行不保留它的换行符是getline()读取,直到遇到一个换行符,然后把所有东西到字符串中的换行符。然后它将这个新行删除而不是将其添加到字符串中。

1

你正在写这样的:

cout<<str; 

您需要输出的新行的字符串,按如下规则进行后:

cout<<str<<endl; 
+0

谢谢! “我的代码适用于单个空白区域,但是如果有连续的空格,它只会删除一个空格,我该如何解决这个问题?” – kusum