0

我正在尝试用 C++ 打印到文件中,由于某种原因,我不断收到这个奇怪的错误:

错误 C2061:语法错误:标识符“ofstream”

我包括以下内容:

#include <fstream>
#include <iostream>

这是我的功能:

void Date::PrintDate(ofstream& resultFile) const
{
    resultFile << m_day << "/" << m_month << "/" << m_year;
}

我是using namespace std


我想通了,这完全是因为我没有以正确的方式包含文件。

4

3 回答 3

3

采用std::ofstream

这是因为我们必须明确指定我们正在谈论的是哪个 ofstream。由于标准名称空间std包含名称ofstream,因此必须明确告知编译器

基本上有两种方式:

就在 .cpp 文件中的所有包含文件之前,有一个 using 指令

1:using namespace std;

或者

2:命名空间std中的每个名称的前缀std::

编辑2:

您修改后的函数声明应如下所示,因为选项 1(从上面)通常是避免全局命名空间污染的首选方法

void Date::PrintDate(std::ofstream& resultFile) const 
{ 
    resultFile << m_day << "/" << m_month << "/" << m_year; 
} 
于 2010-09-05T16:23:18.047 回答
0

以为我疯了,我尝试编译一个修改/简化的版本,它工作正常。您确定您使用的是 C++ 编译器而不是 C 编译器吗?例如 g++ 而不是 gcc。

#include <iostream>
#include <fstream>

using namespace std;

void printDate(ofstream& resultFile)
{
resultFile << 1 << "/" << 1 << "/" << 2010;
}

int main(int arg, char **argv)
{
ofstream ofs("ADate.txt");
if (!ofs) cerr << "huh?";
printDate(ofs);
}
于 2010-09-05T16:49:23.720 回答
0

问题在于包含的“h”文件的顺序在修复后我没有以正确的顺序包含所有文件都运行良好。

于 2010-09-05T17:34:10.093 回答