字符串到对象的插入重载
Insertion Overload with String to Object
这里是 C++ 的新手。我有我正在做的项目
要求我像这样重载插入运算符:
someObject << “stringOne” << “stringTwo” << stringThree <<;
这行代码的想法本质上是将一些字符串添加到数组中,该数组包含“someObject
’成立。
我知道插入重载的原型是这样的,但我不确定如何定义实际函数,所以它像我上面提到的那样工作。
friend std::ostream& operator<<(ostream& os, const someClass& classObj);
我在网上看到的所有例子都是'ostream& identifier'作为左操作数&对象作为右操作数,像这样
'os << someObject' 所以我不确定如何让它像我上面提到的那样工作。
你可以让 operator<<
成为一个成员函数来获得你想要的语法:
someClass& operator<<(std::string str) {
// add the string to this
return *this;
}
你可以这样做:
someObject << "hello" << "world";
您可以在右侧为您想要的任何其他类型添加额外的重载。
这里是 demo。
我认为您需要为 class.
重载插入运算符
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class A {
public:
A & operator <<(const std::string & s) {
v.push_back(s);
return *this;
}
void print() const {
for (auto & s: v) {
cout << "element:" << s << endl;
}
}
private:
vector<string> v;
};
int main() {
A a;
string s = "string object";
a << "test" << "string" << s;
a.print();
return 0;
}
该技术称为“链接”,您看到的示例是不言自明的。链式运算符作用于对对象和参数的引用以及对对象的 returns 引用。
DataList & operator<<(DataList &out, const Data &arg)
{
// insert arg into out
return out;
}
在这种情况下
someObject << “stringOne” << “stringTwo” << stringThree;
就像
一样工作
((someObject << “stringOne”) << “stringTwo”) << stringThree;
这里是 C++ 的新手。我有我正在做的项目 要求我像这样重载插入运算符:
someObject << “stringOne” << “stringTwo” << stringThree <<;
这行代码的想法本质上是将一些字符串添加到数组中,该数组包含“someObject ’成立。
我知道插入重载的原型是这样的,但我不确定如何定义实际函数,所以它像我上面提到的那样工作。
friend std::ostream& operator<<(ostream& os, const someClass& classObj);
我在网上看到的所有例子都是'ostream& identifier'作为左操作数&对象作为右操作数,像这样 'os << someObject' 所以我不确定如何让它像我上面提到的那样工作。
你可以让 operator<<
成为一个成员函数来获得你想要的语法:
someClass& operator<<(std::string str) {
// add the string to this
return *this;
}
你可以这样做:
someObject << "hello" << "world";
您可以在右侧为您想要的任何其他类型添加额外的重载。
这里是 demo。
我认为您需要为 class.
重载插入运算符#include <iostream>
#include <string>
#include <vector>
using namespace std;
class A {
public:
A & operator <<(const std::string & s) {
v.push_back(s);
return *this;
}
void print() const {
for (auto & s: v) {
cout << "element:" << s << endl;
}
}
private:
vector<string> v;
};
int main() {
A a;
string s = "string object";
a << "test" << "string" << s;
a.print();
return 0;
}
该技术称为“链接”,您看到的示例是不言自明的。链式运算符作用于对对象和参数的引用以及对对象的 returns 引用。
DataList & operator<<(DataList &out, const Data &arg)
{
// insert arg into out
return out;
}
在这种情况下
someObject << “stringOne” << “stringTwo” << stringThree;
就像
一样工作((someObject << “stringOne”) << “stringTwo”) << stringThree;