標籤:ber names const blog span struct inf bad get
練習8.13
1 #include <iostream> 2 #include <fstream> 3 #include <sstream> 4 #include <vector> 5 6 using namespace std; 7 8 struct PersonInfo 9 {10 string name;11 vector<string> phones;12 };13 14 string format(string)15 {16 return "format";17 }18 19 bool valid(string s)20 {21 if (s != "")22 return true;23 else24 return false;25 }26 27 int main()28 {29 ifstream in_file("people.txt");30 if (!in_file)31 {32 cerr << "no file?!" << endl;33 return 1;34 }35 string line, word;36 vector<PersonInfo> people;37 while (getline(in_file, line))38 {39 PersonInfo info;40 istringstream record(line);41 record >> info.name;42 while (record >> word)43 info.phones.push_back(word);44 people.push_back(info);45 }46 47 for (const auto &entry : people)48 {49 ostringstream formatted, badNums;50 for (const auto &nums : entry.phones)51 {52 if (!valid(nums))53 {54 badNums << " " << nums;55 }56 else57 formatted << " " << format(nums);58 }59 if (badNums.str().empty())60 cout << entry.name << " " << formatted.str() << endl;61 else62 cerr << "input error: " << entry.name << " invalid number(s) " << badNums.str() << endl;63 }64 system("pause");65 return 0;66 }
練習8.14
一個是避免拷貝,造成效率不高,第二是防止值被修改
C++primer 8.3.2節練習