0
我檢查的鏈接Can I overload CArchive << operator to work with std::string?有關超載的字符串類型,我用與CArchive的運算符重載<<
CArchive& operator<<(CArchive& ar, string lhs)
{
int size_t = lhs.size();
ar << size_t;
ar.Write(lhs.c_str(), size_t);
return ar;
}
CArchive& operator>>(CArchive& ar, string lhs)
{
int size_t = lhs.size();
ar >> size_t;
lhs.resize(size);
ar.Read(&lhs[0], size);
}
而且我在頭功能的朋友說的重載運算符。
class CArrow : public CObject
{
DECLARE_SERIAL(CArrow)
friend CArchive& operator<<(CArchive& ar, std::string lhs);
friend CArchive& operator>>(CArchive& ar, std::string lhs);
...
...
}
但是>>
運算符給了我空白輸出。當我不作爲操作符使用時,只需讀寫我的序列化函數,它們僅適用於一個字符串變量。但是,我有多個字符串來存儲和加載。有沒有其他方式來序列化字符串類型?或者這個重載函數有什麼問題?
您的>>運算符需要指定一個字符串的引用! 而你的<<運算符需要指定一個const引用。 – user1793036
它工作。請寫下來,我會接受作爲答案。但我不明白爲什麼,請你幫我解釋一下嗎? –