c ++逐行读取但不能逐行显示输出

时间:2015-10-23 13:54:22

标签: 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 个答案:

答案 0 :(得分:2)

cout<<str;将字符串写入输出缓冲区,就是这样。下次您调用它时,您写出的str将在写完的最后str之后开始。如果您希望每个str都在自己的行上,那么您可以使用

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

每行不保留其换行符的原因是getline()读取直到遇到换行符然后将所有内容存储到字符串中的换行符。然后它抛出换行符而不是将其添加到字符串中。

答案 1 :(得分:1)

你写的是这样的:

cout<<str;

您需要在字符串后输出换行符,其操作如下:

cout<<str<<endl;