0

我正在尝试使用 std::copy 将向量的内容复制到输出文件中。我正在使用以下代码:

void save()
{
    std::basic_ofstream<TChar> fo(mFilename.c_str());
    std::copy(mContent.begin(), mContent.end(), fo);
}

问题是,我收到此错误:

错误 2 错误 C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : 无法访问在类 'std::basic_ios<_Elem,_Traits>' c:\program files (x86)\microsoft visual studio 中声明的私有成员8\vc\include\fstream 802

我在 SO 上搜索过这个,每个人在传递参数时似乎都意外地使用了复制构造函数。由于我没有传递参数,我不确定复制构造函数是如何被触发的(或者它是否被触发了)。

附加信息:

TChar 是一个模板字符,通常是 char、int、wchar_t 等类型。在这个调用上下文中,我使用的是 char。

mContent 是 TChar 类型的向量。

4

2 回答 2

3

您需要使用std::ostream_iterator

void save()
{
    std::basic_ofstream<TChar> fo(mFilename.c_str());
    std::copy(
        mContent.begin(), mContent.end(),
        std::ostream_iterator<mContent::value_type>(fo, " "));
}
于 2012-12-25T00:52:05.973 回答
2

Copy 将输出迭代器而不是输出流作为第三个参数。你向它传递了一个输​​出流。该错误是因为如果您尝试将输出流用作迭代器,则会发生很多错误。那恰好是第一个。

于 2012-12-25T00:50:28.920 回答