如何解决将向量写入输出文件c ++
在这里,我有一个称为联系人的结构
typedef struct contacts
{
string name; //{jhonathan,anderson,felicia}
string nickName; //{jhonny,andy,felic}
string phoneNumber; // {13453514,148039,328490}
string carrier; // {atandt,coolmobiles,atandt }
string address; // {1bcd,gfhs,jhtd }
} contactDetails;
vector <contactDetails> proContactFile;
我试图将向量中的数据写入输出文件。为此,我编写了以下代码
ofstream output_file("temp.csv");
int selectContact;
cout << "Which Contact you want to delete ? Enter the relevent index " << endl;
cin >> selectContact;
if (selectContact > proContactFile.size()) {
cout << "Invalid entry";
}
else {
proContactFile.erase(proContactFile.begin() + (selectContact - 1));
cout << "Delete successfully";
}
ostream_iterator<contactDetails> output_iterator(output_file,"\n");
copy(begin(proContactFile),end(proContactFile),output_iterator);
}
output_file.close();
fin.close();
remove("Contact.csv");//Deletes contacts.csv file
rename("temp.csv","Contact.csv");
但是这段代码总是给我一个错误。我也想通过以下方式将数据写入文件。
Name,Nick name,Phone number,Carrier,Address
我的代码有什么问题?(基本上我在这里所做的是让用户删除向量中的元素并将更新后的向量写入输出文件中
这是我收到的错误:Error C2679 binary '<<': no operator found which takes a right-hand operand of type 'const _Ty' (or there is no acceptable conversion)
解决方法
所以使用这种写矢量的技术
ostream_iterator<contactDetails> output_iterator(output_file,"\n");
copy(begin(proContactFile),end(proContactFile),output_iterator);
要求您为结构重载operator<<
。即
ostream& operator<<(ostream& out,const contactDetails& details)
{
// your output code here,e.g.
out<< details.name << ',' << details.nickName << ','; //etc << ...
return out;
}
但是令人困惑的问题仍然存在。上面的代码用于更新文件。这意味着您已经有一个文件。这意味着您已经在代码中的其他位置成功写入了该文件。您是如何实现的?
无论如何管理,都应该更新其他代码,以使其使用将要编写的operator<<
来修复此代码。这样,您所有的联系人详细信息输出都会通过一个功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。