新行无法使用C ++中的文件?

时间:2014-08-13 18:28:20

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

我知道其他用户已经提出过这个问题。是的,它是重复的,这里是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;
}



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

2 个答案:

答案 0 :(得分:3)

您需要在编写数据时添加换行符。用getline读取它会丢弃&#34; \ n&#34;在每一行的末尾。

  

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

Here是前面引用的页面。

所以问题是你存储的是以#34; \ n&#34;结尾的以空字符结尾的字符串。

答案 1 :(得分:1)

你也可以使用&#39; endl&#39;而不是&#39; \ n&#39;

点击此链接:C++: "std::endl" vs "\n"