簡體   English   中英

將向量寫入 output 文件 c++

[英]Writing a vector to a output file 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;

我正在嘗試將向量中的數據寫入 output 文件。為此,我編寫了以下代碼

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

我的代碼有什么問題?(基本上我在這里做的是讓用戶刪除向量中的一個元素並將更新后的向量寫入 output 文件)

這是我收到的錯誤: 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<< IE

ostream& operator<<(ostream& out, const contactDetails& details)
{
    // your output code here, e.g.
    out<< details.name << ',' << details.nickName << ','; //etc << ...
    return out;
}

但令人費解的問題仍然存在。 上面的代碼用於更新文件。 這意味着您已經有一個文件。 這意味着您已經在代碼的其他地方成功地編寫了該文件。 你是如何做到的?

無論您如何管理它,您都應該更新其他代碼,以便它使用您將要編寫的operator<<來修復此代碼。 這樣一來,您所有的聯系方式 output 都會通過一個 function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM