我有这样一段代码:
# in class definition
std::ofstream m_myFile;
## some where in code
m_myFile.open(filename);
然后在多个地方,我将文件写作如下:
m_myFile << "some data to file"<<std::endl;
现在这个功能已经很好用了,但是我需要给系统添加一个标记,当没有设置时,不应该创建和写入这个文件。我已经检查过了,如果我这样做,可以运行应用程序:
if(createFile)
{
m_myFile.open(filename);
}
我没有打开文件并写入其流,文件的写入情况也没有出现任何运行时错误。我的问题是,如果我没有打开文件并写入其流,那么标准行为是什么?
我应该会得到一个运行时错误,还是ofstream会忽略数据而不会发生运行时错误?
我正在使用Visual Studio 2013。
std::ofstream
的构造函数会自动打开文件。你可能想使用std::fstream
,这样你就可以选择何时以及使用读取std::fstream::in
或写入std::fstream::out
模式打开文件。 - iammilindstd::ofstream
有不止一个构造函数。接受字符串的构造函数(重载2和3 在此处)尝试打开流。默认构造函数(重载1)则不会。这就是为什么std::ofstream::open
也存在的原因。 - Bulletmagnet