下面是打印 std::string
类型值的完美代码
std::vector<std::string> v;
v.push_back("this");
v.push_back("is");
v.push_back("a");
v.push_back("test");
std::copy(v.begin(),v.end(),std::ostream_iterator<std::string>(std::cout,","));
但是当我尝试打印用户定义的类型(结构)时,代码没有编译:
struct Rec
{
int name;
int number;
int result;
};
int main()
{
Rec rec1 = {1,1,1};
Rec rec2 = {2,1,1};
Rec rec3 = {3,1,1};
Rec rec4 = {4,1,1};
Rec rec5 = {4,1,1};
std::vector<Rec> v;
record.push_back(rec1);
record.push_back(rec2);
record.push_back(rec3);
record.push_back(rec4);
record.push_back(rec5);
std::copy(v.begin(),v.end(),std::ostream_iterator<Rec>(std::cout,","));
return 1;
}
我在这里错过了什么?
最佳答案
您需要为您的记录实现一个流插入运算符,如下所示:
#include <iostream>
#include <iterator>
#include <vector>
struct Rec
{
int name;
int number;
int result;
};
std::ostream& operator<<(std::ostream& os, const Rec& rec)
{
os << "{name: " << rec.name << ", number: " << rec.number
<< ", result: " << rec.result << "}";
return os;
}
int main()
{
Rec rec1 = {1, 1, 1};
Rec rec2 = {2, 1, 1};
Rec rec3 = {3, 1, 1};
Rec rec4 = {4, 1, 1};
Rec rec5 = {4, 1, 1};
std::vector<Rec> v;
v.push_back(rec1);
v.push_back(rec2);
v.push_back(rec3);
v.push_back(rec4);
v.push_back(rec5);
std::copy(v.begin(), v.end(), std::ostream_iterator<Rec>(std::cout, ",\n"));
return 1;
}
关于c++ - 如何使用 std::copy 打印用户定义的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42106614/