常见输入
常见机试输入
输入一个数字再加上空格间隔的数组,并且给了数组元素个数n
1 2 3 4 5
| int n; cin >> n; vector<int> input(n); for(int i = 0; i < n; i++) cin >> input[i];
|
输入一个数字再加上空格间隔的数组,但是没有给数组元素个数n
1 2 3 4 5 6 7
| int a; vector<int> input; while(cin >> a){ input.push_back(a); if(cin.get() == '\n') break; }
|
给你输入的数据组数t,和很多组数据。这些数据有换行,但是数组元素个数都没有给
比如:
1 2 3 4 5 6 7
| 3 //有3组数据 1 2 3 4 5 //第一组数据A 2 4 5 3 6 //第一组数据B 3 4 6 //第二组数据A 2 2 5 //第二组数据B 1 //第三组数据A 0 //第三组数据B
|
因为没有给每行数据的个数,所以一行数据输入完成时需要识别换行符。
输入方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int t, a; cin >> t; vector<int> A, B; for(int i = 0; i < 2*t; i++){ while(cin >> a){ A.push_back(a); if (cin.get() == '\n') break; } while(cin >> a){ B.push_back(a); if (cin.get() == '\n') break; } }
|
不存在空格的字符数组
输入带有空格的字符数组
1 2
| string s; getline(cin, s);
|
输入多个整数
1 2
| int a,b,c,d; cin >> a >> b >> c >> d;
|
字符串的输入
getline
getline(istream& is, string& str);
把is传到str中
getline(istream& is, string& str, char delim);
delim是截断字符,可以用来分割字符串1 2 3 4 5 6 7 8
| #include <sstream>
string s = "alice,20,800,sz";
istringstream is(s); string str; std::getline(is, str); //str: alice,20,800,sz std::getline(is, str, ','); //str: alice
|
输入:[1,1,1,1,2,1,1],[5,2,5,4,5,1,6]
。要求提取出数字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| int main(){ string sw, sh; getline(cin, sw, ']'); getline(cin, sh, ']');
istringstream isw(sw.substr(1)), ish(sh.substr(2)); string tmp; vector<int> width, height; while (getline(isw, tmp, ',')) width.push_back(stoi(tmp)); while (getline(ish, tmp, ',')) height.push_back(stoi(tmp)); return 0; }
|
输出精度控制
如:输出保留2位小数
1 2 3 4 5 6
| double d = 1.666666; //c++ #include <iomanip> cout << setprecision(3) << d << endl; //1.67 //c printf("%.2f\n", d); //1.67
|
OJ练习
牛客