练习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 else 24 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 else 57 formatted << " " << format(nums); 58 } 59 if (badNums.str().empty()) 60 cout << entry.name << " " << formatted.str() << endl; 61 else 62 cerr << "input error: " << entry.name << " invalid number(s) " << badNums.str() << endl; 63 } 64 system("pause"); 65 return 0; 66 }
练习8.14
一个是避免拷贝,造成效率不高,第二是防止值被修改
时间: 2024-11-11 20:27:42