我正在尝试使用std :: copy将向量的内容复制到输出文件中。我正在使用以下代码:
void save()
{
std::basic_ofstream<TChar> fo(mFilename.c_str());
std::copy(mContent.begin(), mContent.end(), fo);
}
问题是,我收到此错误:
错误2错误C2248:'std :: basic_ios&lt; _Elem,_Traits&gt; :: basic_ios':无法访问类'std :: basic_ios&lt; _Elem,_Traits&gt;'中声明的私有成员c:\ program files(x86)\ microsoft visual studio 8 \ vc \ include \ fstream 802
我在SO上搜索了这个,并且每个人在传递参数时似乎都意外地使用了复制构造函数。由于我没有传递参数,我不确定复制构造函数是如何被触发的(或者它是否被触发)。
其他信息:
TChar是一个模板字符,通常是char,int,wchar_t等类型....在这个调用上下文中,我使用的是char。
mContent是TChar类型的向量。
答案 0 :(得分: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, " "));
}
答案 1 :(得分:2)
Copy将输出迭代器作为输出流作为第三个参数。你传递了一个输出流。该错误是因为如果您尝试将输出流用作迭代器,则会发生许多错误。这恰好是第一个。