C++ 使用CArchive运算符重载<&书信电报;

C++ 使用CArchive运算符重载<&书信电报;,c++,serialization,mfc,C++,Serialization,Mfc,我检查了链接是否可以过载CArchive size\u t; lhs.调整大小(大小); 应力读数(&lhs[0],尺寸); } 我将头函数中的重载运算符声明为friend class CArrow : public CObject { DECLARE_SERIAL(CArrow) friend CArchive& operator<<( CArchive& ar, std::string lhs); friend CArchive&am

我检查了链接是否可以过载CArchive size\u t; lhs.调整大小(大小); 应力读数(&lhs[0],尺寸); } 我将头函数中的重载运算符声明为friend

class CArrow : public CObject  
{
    DECLARE_SERIAL(CArrow)
    friend CArchive& operator<<( CArchive& ar, std::string lhs);
    friend CArchive& operator>>( CArchive& ar, std::string lhs);
  ...
  ...
}
class CArrow:公共对象
{
声明序列号(CArrow)
friend CArchive&operator(CArchive&ar,标准::字符串lhs);
...
...
}

但是
>
操作符给我空白输出。当我不使用运算符时,只需在序列化函数中读写,它们只适用于一个字符串变量。但是,我有不止一个字符串要存储和加载。是否有其他方法序列化字符串类型?或者这种重载函数有什么问题?

您的运算符>>似乎在将大小写入ar,而不是从ar读取


您应该在问题中添加MFC标记。

我更正了问题中的操作员输入错误,并添加了MFC标记。谢谢但问题不在于此。您的>>运算符需要指定对字符串的引用!你的计划成功了。请写下来,我会接受你的回答。但我不明白为什么,你能给我解释一下吗?
class CArrow : public CObject  
{
    DECLARE_SERIAL(CArrow)
    friend CArchive& operator<<( CArchive& ar, std::string lhs);
    friend CArchive& operator>>( CArchive& ar, std::string lhs);
  ...
  ...
}