《C++ Primer》8.3.1节练习
生活随笔
收集整理的這篇文章主要介紹了
《C++ Primer》8.3.1节练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
練習8.9:
#include <iostream> #include <sstream> #include <string> #include <stdexcept>using namespace std;istream &f(istream &in) {string v;while (in >> v, !in.eof())//直到遇到文件結束符才停止讀取{if (in.bad())throw runtime_error("IO流錯誤");if (in.fail()) {cerr << "數據錯誤,請重試:" << endl;in.clear();in.ignore(100, '\n');continue;}cout << v << endl;}in.clear();return in; }int main() {ostringstream msg;msg << "C++ rush!!!" << endl;istringstream in(msg.str());f(in);return 0; }練習8.10:
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <vector>using namespace std;int main() {ifstream in("data");//打開文件if (!in) {cerr << "無法打開輸入文件" << endl;return -1;}string line;vector<string>words;while (getline(in, line)) {words.push_back(line);}in.close();vector<string>::const_iterator it = words.begin();while (it != words.end()) {istringstream line_str(*it);string word;while (line_str >> word)cout << word << " ";cout << endl;++it;}return 0; }練習8.11:
原代碼:
#include <iostream> #include <sstream> #include <string> #include <vector>using namespace std;struct PersonInfo {string name;vector<string>phones; };int main() {string line, word;vector<PersonInfo>people;while (getline(cin, line)) {PersonInfo info;istringstream record(line);record >> info.name;while (record >> word)info.phones.push_back(word);people.push_back(info);}return 0; }record的定義放while外的代碼:
#include <iostream> #include <sstream> #include <string> #include <vector>using namespace std;struct PersonInfo {string name;vector<string>phones; };int main() {string line, word;vector<PersonInfo>people;istringstream record;while (getline(cin, line)) {PersonInfo info;record.clear();record.str(line);record >> info.name;while (record >> word)info.phones.push_back(word);people.push_back(info);}return 0; }練習8.12:
由于每個人的電話號碼數量不固定,因此更好的方式不是通過類內初始化指定人名和所有電話號碼,而是在缺省初始化之后,在程序中設置人名并逐個添加電話號碼。
總結
以上是生活随笔為你收集整理的《C++ Primer》8.3.1节练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: excel中的Evaluate用法
- 下一篇: 传真机常识