[英]Could you please verify if my code is correct for saving string to struct?
我正在嘗試從具有三個輸入(即Mike Mike 60)的.txt文件中歸檔輸入信息,並將其插入到C ++結構中以用於輸出到屏幕。
struct Person {
string name;
int age;
};
void addData()
{
Person aPerson;
char fileName[80];
cout << "Please enter the file name: ";
cin.getline(fileName, 80);
//string fullName;
ifstream fin(fileName);
string tmp;
stringstream ss;
while (!fin.eof()) {
getline(fin, aPerson.name);
aPerson.name = tmp;
getline(fin, tmp);
ss << tmp;
ss >> aPerson.age;
ss.clear();
getline(fin, tmp);
ss.clear();
cout << aPerson.name << aPerson.age << endl;
}
}
此代碼將以以下格式讀取數據:
Joe Bloggs
42
Franziska von Karma
23
Jeff Jefferson
84
這就是您輸入數據的樣子嗎?
如果每人一行,並且每個人的名字中恰好有兩個單詞,則可以使用getline
的第三個參數來設置自定義分隔符 -無需讀取整行,它會一直讀取直到到達空格為止。
Joe Bloggs 42
Jeff Jefferson 84
Amy Anderson 57
要處理此數據:
…
while (!fin.eof()) {
string firstname;
getline(fin, firstname, ' ');
string surname;
getline(fin, surname, ' ');
aPerson.name = firstname + " " + surname;
string age;
getline(fin, age);
ss << age;
ss >> aPerson.age;
cout << aPerson.name << aPerson.age << endl;
ss.clear();
}
如果您可以逗號分隔數據格式,制表符分隔或任何不是空格分隔的格式獲取數據,則可以使用該定界符並分兩步而不是三步提取數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.