ACM模式各种输入总结 C++
一、整型数组输入:
- (很简单)在终端的一行中输入固定数目的整型数字,并存到数组中,中间以空格分隔。
示例:
- 3
- 1 2 3
int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; ++i){ cin >> nums[i]; } |
- (重难点)在终端的一行中输入非固定数目的整型数字,并存到数组中,中间以空格(或者其他单字符,./)分隔。
示例:
- 1 2 3
//方法1:getchar //代码通过cin.get()从缓存中读取一个字节,这样就扩充了cin只能用空格和TAB两个作为分隔符。 //这很精巧。发现是'\n'就知道一行结束了 vector<int> nums; int num; while(cin >> num){ nums.push_back(num); if(getchar() == '\n') break; }
//方法2:cin.get vector<int> nums; int num; while(cin>>num){ nums.push_back(num); if(cin.get() == '\n') break; } |
- 在终端的一行中输入固定数目的整型数字,并存到数组中,中间以(其他单字符,./)分隔。
示例:
- 3
- 1,2,3
int m; cin >> m; char sep; vector<int> nums(m);
for (int i = 0; i < m - 1; ++i){ cin >> nums[i] >> sep; } cin >> nums[m - 1]; |
二、字符串输入:
- 给定一行字符串,每个字符串用空格间隔,一个样例为一行
示例: daa ma yello
int main() { string str; vector<string> strs; while (cin >> str) { strs.push_back(str); if (getchar() == '\n') { //控制测试样例 for (auto& str : strs) { cout << "当前单词:"<< str << " "; } cout << endl; strs.clear(); } } return 0; } |
2、给定一行字符串,每个字符串用逗号间隔,一个样例为一行
方法:使用getline 读取一整行字符串到字符串input中,然后使用字符串流stringstream,读取单个数字或者字符。每个字符中间用','间隔
int main() { string input; while (getline(cin, input)) { //读取一行 vector<string> strs; string str; stringstream ss(input); while(getline(ss, str, ',')){ strs.push_back(str); } sort(strs.begin(), strs.end()); for (auto& str : strs) { cout << str << " "; } cout << endl; } return 0; } |
3、给定一行字符串,每个字符串用空格间隔,一个样例为一行
int main() { string input; while (getline(cin, input)) { //读取一行 stringstream data(input); //使用字符串流 int num = 0, sum = 0; while (data >> num) { sum += num; } cout << sum << endl; } return 0; } |
输入 1 2 3
输出6
https://blog.csdn.net/weixin_44674424/article/details/124160921