我想从用户词得到并且在certian词的文件中放置。 我有getline的问题。 在新文件中,我没有任何新行。 当我将Newline添加到我写入文件的字符串时,此行被读取两次而writeto文件被读取(我认为bcoz我看到了这个新文件)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string contain_of_file,bufor,word,empty=" ",new_line="\n";
string conection;
string::size_type position;
cout<<"Give a word";
cin>>word;
ifstream NewFile;
ofstream Nowy1;
Nowy1.open("tekstpa.txt", ios::app);
NewFile.open("plik1.txt");
while(NewFile.good())
{
getline(NewFile, contain_of_file);
cout<<contain_of_file;
position=contain_of_file.find("Zuzia");
if(position!=string::npos)
{
conection=contain_of_file+empty+word+new_line;
Nowy1<<conection;
}
Nowy1<<contain_of_file;
}
Nowy1.close();
NewFile.close();
cin.get();
return 0;
}
答案 0 :(得分:0)
这里的问题不是你的阅读。直接,但关于你的循环。
不要循环while (stream.good())
或while (!stream.eof())
。这是因为在尝试从文件之外读取之后的之前,不会设置eofbit
标志。这意味着循环将迭代一次额外的时间,并且您尝试从文件中读取,但std::getline
调用将失败,但您没有注意到它,只是继续,好像什么也没发生。
取而代之的是
while (std::getline(NewFile, contain_of_file)) { ... }
一个不相关的提示:不需要变量conection
,你可以只做
Nowy1 << contain_of_file << ' ' << word << '\n';