簡體   English   中英

您能否驗證我的代碼是否正確,以將字符串保存到struct中?

[英]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.

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