std :: ofstream不接受const char * for<<操作者

时间:2016-12-23 11:47:29

标签: c++ visual-studio-2015 ofstream

我已将我的C ++项目从VS 2010升级到2015,并在编译时遇到一些问题。方法标题如下所示:

void CCodeGenerator::GenerateCode(const MachineExArray & AMachineExArray,
    const MachineArrays & AMachineArrays,
    std::ofstream & HeaderFile,
    std::ofstream & SourceFile)

有一条线:

std::string HeaderDefine = path(OutputFilename).filename().generic_string();

for (std::string::iterator Iter = HeaderDefine.begin(); Iter != HeaderDefine.end(); Iter++)
    *Iter = toupper((unsigned char)*Iter);

HeaderDefine = "__" + HeaderDefine + "_H__";

HeaderFile << "#ifndef " << HeaderDefine << "\n"; // <-- This one

编译器在此处停止并说:

  

没有操作员&#34;&lt;&lt;&#;匹配这些操作数。操作数类型是:   std :: ofstream&lt;&lt; const char [9]

我很久以前就用C ++写过,但是从我记忆中来看,std::ofstream非常自由,应该接受大多数简单类型作为输入。问题出在哪里?

当我开始写HeaderFile.时,会立即将其标记为错误(红色下划线)并且评论说,&#34;不允许不完整的类型&#34;。

1 个答案:

答案 0 :(得分:3)

的观察
  

&#34;不允许使用不完整的类型&#34;

。错误。

#include <ostream>

int main()
{
    std::ofstream HeaderFile;
}

也会出现此错误,而

#include <fstream>

int main()
{
    std::ofstream HeaderFile;
}

在VS2015中编译。

相关问题