到目前为止,我已经定义了一个简单的类......
class person {
public:
string firstname;
string lastname;
string age;
string pstcode;
};
...然后将一些成员和值添加到名为“bill”...
的对象中int main() {
person bill;
bill.firstname = "Bill";
bill.lastname = "Smith";
bill.age = "24";
bill.pstcode = "OX29 8DJ";
}
但是你怎么输出所有这些值呢?你会使用for循环迭代每个成员吗?
答案 0 :(得分:0)
简单地说,您使用ostream
输出每个元素:
class Person
{
public:
void Print_As_CSV(std::ostream& output)
{
output << firstname << ",";
output << lastname << ",";
output << age << ",";
output << pstcode << "\n";
}
string firstname;
string lastname;
string age;
string pstcode;
};
可能有不同的打印方法,这就是我没有超载operator <<
的原因。例如,每行一个数据成员将是另一种流行的场景。
编辑1:为什么不循环?
class
具有单独的字段,这就是您无法对成员进行迭代的原因。
如果要对成员进行迭代或循环,则必须为类创建迭代器或使用提供迭代的容器(如std::vector
)。
答案 1 :(得分:0)
我通常会覆盖operator <<
,因此我的对象与任何内置对象一样容易打印。
以下是覆盖operator <<
的一种方式:
std::ostream& operator<<(std::ostream& os, const person& p)
{
return os << "("
<< p.lastname << ", "
<< p.firstname << ": "
<< p.age << ", "
<< p.pstcode
<< ")";
}
然后使用它:
std::cout << "Meet my friend, " << bill << "\n";
这是一个使用这种技术的完整程序:
#include <iostream>
#include <string>
class person {
public:
std::string firstname;
std::string lastname;
std::string age;
std::string pstcode;
friend std::ostream& operator<<(std::ostream& os, const person& p)
{
return os << "("
<< p.lastname << ", "
<< p.firstname << ": "
<< p.age << ", "
<< p.pstcode
<< ")";
}
};
int main() {
person bill;
bill.firstname = "Bill";
bill.lastname = "Smith";
bill.age = "24";
bill.pstcode = "OX29 8DJ";
std::cout << "Meet my friend, " << bill << "\n";
}