【问题标题】:New line is not working with files in C++?新行不适用于 C++ 中的文件?
【发布时间】:2014-08-13 18:28:19
【问题描述】:

我知道其他用户已经问过这个问题。是的,它是重复的,这里是 link1link2 。我尝试了链接中给出的所有解决方案,但仍然无法正常工作。我正在使用 borland 的 TurboC++ 4.5 编译器。这是我的代码

#include<iostream.h>
#include<conio.h>
#include<fstream.h>

int main()
{
  ofstream fout;

  fout.open("COUNTRY");
  fout<<"UNITED STATES OF AMERICA \n";
  fout<<"UNITED KINGDOM \n";
  fout<<"SOUTH KOREA \n";
  fout.close();

  fout.open("CAPITAL");
  fout<<"WASHINGTON \n";
  fout<<"LONDON \n";
  fout<<"SEOUL \n";
  fout.close();

  const int N=80;
  char line[N];
  ifstream fin;

  fin.open("COUNTRY");
  cout<<"\nCONTENTS OF COUNTRY FILE\n";
  while(fin)
  {
    fin.getline(line,N);
    cout<<line;
  }
  fin.close();

  fin.open("CAPITAL");
  cout<<"\nCONTENTS OF CAPITAL FILE\n";
  while(fin)
  {
    fin.getline(line,N);
    cout<<line;
  }
  fin.close();

  return 0;
}



我检查了更多解决方案,但无法解决此问题,这就是我将其发布在这里的原因。

【问题讨论】:

  • 尝试使用调试器并在getline 之后放置一个断点。查看您的 line 变量。验证它是否有一个换行符和一个终止空字符
  • 什么不起作用?文件中没有换行符?你用什么编辑器来查看它们?你试过\r\n吗?你为什么用这么老的编译器?
  • @RetiredNinja 。是的,我尝试使用 \r\n 。但没有用。如果我改变编译器,我能解决这个问题吗?
  • 首先我认为您需要准确解释问题所在。您编写的文件中没有换行符吗?回读文件时是否显示问题? getline 应该读取直到分隔符的所有字符,在本例中为 \n,并丢弃分隔符。如果是这种情况,那么您需要在打印时将\n 添加到您阅读的行的末尾。
  • 这段代码比我老了

标签: c++ file-io turbo-c++


【解决方案1】:

您在写出数据时需要添加换行符。用getline 读入会丢弃每行末尾的“\n”。

如果找到分隔符,则将其提取并丢弃,即它是 没有存储,下一个输入操作将在它之后开始。

Here 是前面引用的页面。

所以问题是您存储的以空字符结尾的字符串不以“\n”结尾。

【讨论】:

    【解决方案2】:

    你也可以用'endl'代替'\n'

    查看此链接:C++: "std::endl" vs "\n"

    【讨论】:

      猜你喜欢
      • 2023-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 2021-09-26
      相关资源
      最近更新 更多