我在循环中调用函数write
。我需要附加几行。
我通过了
std::fstream file(filename);
到
write(info, &file);
以下代码不附加换行符,或者至少Notepad ++不会显示它。(我只得到一个空格):
void IO::write(const std::string& name, std::iostream* stream)
{
(*stream) << "usr" << name << " === " << "\n";
}
有什么问题?如何将新行附加到文本文件?
答案 0 :(得分:3)
要详细说明我的相当严厉的评论,你的换行没有错,但是......
...使用正确的类型......
#include <iostream>
#include <fstream>
// ...
std::ofstream file( filename );
// ...
...如果您想将info
打印到流中,只需执行此操作而不是通过某些功能...
// ...
file << "usr" << info << " === " << "\n";
// ...
...如果你真的希望使其成为一个功能,至少使用引用和正确的类型......
void IO::write( std::ostream & stream, const std::string & name )
{
stream << "usr" << name << " === \n";
}
// ...
IO::write( file, info );
// ...
...但是在C ++中执行输出的“传统”方法是重载所讨论的类的operator<<
,并且让打印实例的实现与类成员实现一起坐而不是去通过C风格的功能......
class MyClass
{
// ...
friend std::ostream & operator<<( std::ostream & stream, const MyClass & obj );
// ...
};
std::ostream & operator<<( std::ostream & stream, const MyClass & obj )
{
stream << "usr" << obj.name << " ===\n";
return stream;
}
// ...
MyClass mine;
file << "Hello\n" << mine << 42 << "\n";
答案 1 :(得分:0)
我还建议您使用std :: endl而不是“\ n”。 std :: endl刷新文件,“\ n”没有。
刷新文件后(使用std :: endl或关闭文件)。尝试使用不同的编辑器,但应该可以看到行尾。
让