how*_*ieh 2 c++ string overloading stream operator-keyword
怎么可能用来 operator<<推进strings vector.我搜索了很多,但只找到流示例.
class CStringData
{
vector< string > myData;
// ...
// inline operator << ... ???
};
Run Code Online (Sandbox Code Playgroud)
我希望这可以用作一个简单的省略(类似void AddData(...))交换来获得健壮的参数.
CStringData abc;
abc << "Hello" << "World";
Run Code Online (Sandbox Code Playgroud)
这有可能吗?
您可以定义operator<<为:
class CStringData
{
vector< string > myData;
public:
CStringData & operator<<(std::string const &s)
{
myData.push_back(s);
return *this;
}
};
Run Code Online (Sandbox Code Playgroud)
现在你可以这样写:
CStringData abc;
abc << "Hello" << "World"; //both string went to myData!
Run Code Online (Sandbox Code Playgroud)
但我建议你不要把它friend作为成员函数来实现CStringData:
class CStringData
{
vector< string > myData;
public:
friend CStringData & operator<<(CStringData &wrapper, std::string const &s);
};
//definition!
CStringData & operator<<(CStringData &wrapper, std::string const &s)
{
wrapper.myData.push_back(s);
return wrapper;
}
Run Code Online (Sandbox Code Playgroud)
用法与以前一样!
要探索为什么你喜欢把它变成朋友和规则是什么,请阅读:
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |