参考笔记:ACM模式各种输入总结C++版 - 知乎 (zhihu.com)
之前觉得就是输入没那么难,但是做了好几个厂的笔试题,着实给我整不会了。所以赶紧亡羊补牢吧!!
总结一下:输入的长度大小一般是给定的,不给定大小的情况我个人感觉很少。而且对于输入的分隔符无非就两种“,”和“ ”;
所以代码中有一些用while进行cin输入的,完全可以用for替代。
代码:
//这个文件是总结acm各种情况的输入,建议记忆 #include "acmcin.h" using namespace std; //按照acm的题型分为处理数字型,和处理字符串型 //首先要知道cin只能将空格和table作为分隔符!!! //处理数字型 //已知长度,且以空格分割 //一般已知长度是指在数据前面输入数据的基本信息 /**************输入*****************/ // 3 4 // 1 2 3 // 4 5 6 // 7 8 9 // 10 11 12 /**********************************/ void shuzi_kongge() { int num = 0, len = 0; cin >> num; cin >> len; vector<vector<int>>arr(num, vector<int>(len)); int temp = 0; for (int i = 0; i < num; i++) { for (int j = 0; j < len; j++) { cin >> arr[i][j]; /*temp; arr[i].push_back(temp);*/ } } cout << "输入如下" << endl; for (int i = 0; i < num; i++) { for (int j = 0; j < len; j++) { cout << arr[i][j] << "\t"; } cout << endl; } } //已知长度,且以","分割 /**************输入*****************/ // 3 // 1,2,3,3,2 // 4,5,6,1,3 // 7,8,9,13,4 /**********************************/ void shuzi_douhao() { /*int num = 0; cin >> num; vector<int, vector<int>>arr(num); string cur while() cout << "输入如下" << endl;*/ int n; cin >> n; //vector<vector<int>> vec(n, vector<int>(5)); vector<vector<int>> vec(n); for (int i = 0; i < n; ++i) {//注意这里一定要有i控制,用while容易一直输入导致错误 string s; cin >> s; replace(s.begin(), s.end(), ',', ' '); /*cout << "测试" << endl; cout << s << endl;*/ istringstream is(s); string tmp; //事先知道数组多长可以用for //for (int j = 0; j < 5; ++j) //{//内层循环也很重要 // is >> tmp; // vec[i][j] = stoi(tmp); //} //事先不知道数组多长可以用while while (is >> tmp) { vec[i].push_back(stoi(tmp)); } } //输出显示 for (int i = 0; i < vec.size(); i++) { for (int j = 0; j < vec[0].size(); j++) { cout << "\t" << vec[i][j]; } cout << endl; } //return 0; } /*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/ /*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/ /*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/ //未知长度,且以空格分割 //这个暂时有问题 /**************输入*****************/ // 1 2 3 3 2 // 4 5 6 1 3 // 7 8 9 13 4 /**********************************/ //这个由于未知长度,没法判断输入结束,需要知道其他更多的信息 void shuzi_kongge_weizhi() { vector<int>vec; //vector<vector<int>>vec; string s; int num = 0, len = 0; int i = 0; bool flag = true; //记录一行的个数; while (cin >> num) { vec.push_back(num); if (flag)len++; if (getchar() == '\n') { if (flag) flag = false; continue; } } //输出显示 for (int i = 0; i < vec.size(); i++) { cout << "\t" << vec[i]; if ((i + 1) % len == 0) cout << endl; } } //未知长度,但是用","分割 /**************输入*****************/ // 1, 2, 3, 3, 2 // 4, 5, 6, 1, 3 // 7, 8, 9, 13, 4 /**********************************/ void shuzi_douhao_weizhi() { string s; vector<int>vec; while (cin >> s) { replace(s.begin(), s.end(), ',', ' '); istringstream is(s); int temp = 0; string cur; cout << "转化结果" << endl; while (is >> cur) { vec.push_back(stoi(cur)); cout << "\t" << stoi(cur); } cout << endl; } } /*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/ /*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/ /*******************处理未知长度的输入应该很少,最起码也得有一个结束标志位**********************/ //处理字符串 //以空格分割 /*********************************输入**************************************/ // good good study day day up /*********************************输入**************************************/ void str_kongge() { vector<string>str; string s; while (cin >> s) { str.push_back(s); if (getchar() == '\n') { s.clear(); break; } } //输出结果 cout << "输出展示" << endl; for (auto st : str) { cout << st << " "; } cout << endl; } //用","分割 void str_douhao() { vector<string>str; string s; //使用getline函数 while (getline(cin, s)) { stringstream input(s); //cout << input << endl; string s1; while (getline(input, s1, ',')) { str.push_back(s1); /*if (getchar() == '\n') break;*/ s1.clear(); } /*replace(s.begin(), s.end(), ',', ' '); istringstream is(s); string temp; while (is >> temp) { } if (getchar() == '\n') { break; }*/ } //输出结果 cout << "输出展示" << endl; for (auto st : str) { cout << st << " "; } cout << endl; }
标签:cout,int,笔试,自我,acm,cin,while,num,vec From: https://www.cnblogs.com/rengongzz/p/17736522.html