使用ofstream<<操作者

时间:2016-01-12 18:00:54

标签: c++ file c++11 file-writing

我正在尝试写一个大文件。我的初始实现只是使用std::cout,然后将输出重定向到另一个文件。

我做了另一个实现,我使用std::ofstream直接写入文件,当我比较两个版本时,看到它们时文件看起来完全一样。

然而,当我尝试使用diffcmp之类的文件时,文件却完全不同了。我使用<<运算符而不是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

2 个答案:

答案 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')。现在你所要做的就是比较两个字符串。