我正在尝试写一个大文件。我的初始实现只是使用std::cout
,然后将输出重定向到另一个文件。
我做了另一个实现,我使用std::ofstream
直接写入文件,当我比较两个版本时,看到它们时文件看起来完全一样。
然而,当我尝试使用diff
或cmp
之类的文件时,文件却完全不同了。我使用<<
运算符而不是std::ofstream
函数的事实可能是这个原因吗?我认为文本是以不同的方式编码的。
我不能把整个代码放在这里,因为它太长了,但我希望样本就足够了。无论如何,我在问一个概念性的问题。
std::ofstream::write
运行它,
void write_file(){
std::ofstream myfile;
myfile.open ("MyFile.txt");
myfile<<"write data\n";
...
}
int main(){
write_file();
return 0;
}
其他方法,
./mycompiledprogram
运行它,
int main(){
std::cout<<"write data"<<std::endl;
}
使用 diff 我得到的每条线都与另一条线不同,尽管看起来是相同的。 使用 cmp 进行比较我得到了类似的内容
./mycompiledprogram > MyFile.txt
答案 0 :(得分:1)
在ofstream方法中,您使用&#39; \ n&#39;
编写行尾在cout方法中,您使用std :: endl
编写行尾我想在你的平台上,std :: endl不等同于&#39; \ n&#39;这就是为什么每条线都不同的原因。
答案 1 :(得分:0)
你应该创建一个函数bool CompareFiles(ifstream& f1, ifstream&f2)
,它逐行比较两个文件。我不知道您是如何选择构建文件的,但您可以说:f1.getline(buff1, '\n')
和f2.getline(buff2, '\n')
。现在你所要做的就是比较两个字符串。