C++ 如何将逗号分隔的txt文件流式传输到类对象?
如何将一行逗号分隔的txt文件流式传输到包含名字、姓氏和年龄变量的对象?我想重载>>操作符来执行此类操作 std::istream&operator>>std::istream&file,PersonData&obj{ std::字符串行,firstName,lastName,age; 而std::getlinefile{ std::stringstream-ssline; 性欲,名字,','; std::getnesy,lastName,','; 性病:活泼,年龄,','; firstName>>obj.firstName; lastName>>obj.lastName; std::stoiage>>对象年龄; } 返回文件; }C++ 如何将逗号分隔的txt文件流式传输到类对象?,c++,C++,如何将一行逗号分隔的txt文件流式传输到包含名字、姓氏和年龄变量的对象?我想重载>>操作符来执行此类操作 std::istream&operator>>std::istream&file,PersonData&obj{ std::字符串行,firstName,lastName,age; 而std::getlinefile{ std::stringstream-ssline; 性欲,名字,','; std::getnesy,lastName,','; 性病:活泼,年龄,','; firstName
这是你们班的模板:
class My_Class
{
public:
friend std::istream& operator>>(std::istream& input, My_Class& mc);
private:
// members go here.
};
std::istream& operator>>(std::istream& input, My_Class& mc)
{
// Insert code to read comma separated values here.
return input;
}
My_Class mc;
std::vector<My_Class> database;
while (input_file >> mc)
{
database.push_back(mc);
}
以上内容允许您将输入流式传输到类:
class My_Class
{
public:
friend std::istream& operator>>(std::istream& input, My_Class& mc);
private:
// members go here.
};
std::istream& operator>>(std::istream& input, My_Class& mc)
{
// Insert code to read comma separated values here.
return input;
}
My_Class mc;
std::vector<My_Class> database;
while (input_file >> mc)
{
database.push_back(mc);
}
使用输入文件的示例编辑您的问题将允许读者确认或拒绝函数的内容 john-wick.txt
John,Wick,50
main.cpp
#include <iostream>
#include <fstream>
struct PersonData {
string firstname;
string lastname;
int age;
friend std::istream& operator>>(std::istream& in, PersonData& obj) {
char comma;
in >> obj.firstname >> comma >> obj.lastname >> comma >> obj.age;
return in;
}
}
int main(int argc, char *argv[]) {
std::ifstream file("john-wick.txt");
PersonData john;
file >> john;
}
操作员>>应从文件中读取单个条目
如果你有课
struct Person {
std::string first_name;
std::string last_name;
unsigned age;
};
您可以使用输入/输出运算符:
std::ostream& operator<<(std::ostream& out,const Person& p) {
out << p.first_name << ", " << p.last_name << ", " << p.age;
return out;
}
std::istream& operator>>(std::istream& in,Person& p){
const auto comma = ',';
std::getline(in,p.first_name,comma);
std::getline(in,p.last_name,comma);
std::string temp;
std::getline(in,temp);
p.age = std::stoi(temp);
return in;
}
要从文件中读取所有条目,可以使用向量和循环:
std::vector<Person> persons;
Person entry;
while(stream >> entry) persons.push_back(entry);
注:我没有删除名字中的前导空格。我把这个留给你 到目前为止你有什么?向我们展示您当前的代码,您可以编写代码来执行此操作。没有可以使用的默认设置。但是,您可以为任何特定对象编写运算符>>,然后该对象包含解析给定字符串数据并将其放入成员变量的代码。对不起,没有魔法;所需工作.std::istream&operator>>std::istream&file,PersonData&obj{std::string line,firstName,lastName,age;whilestd::getlinefile,line{std::stringstream ssline;std::getity,firstName',';std::getity,lastName',';std::getity,age',';firstName>>obj.firstName;lastName>>obj.lastName;std::stoiage>>obj.age;}返回文件;}@AdamAlrefai:请不要将代码作为注释发布。正如您所看到的,它不可读。请将代码作为文本编辑您的问题。我的问题是插入代码以读取逗号分隔的值
std::vector<Person> persons;
Person entry;
while(stream >> entry) persons.push_back(entry);