C++输入输出模式(ACM模式)笔记(个人)(第十六天)
上周参加了学校的全国高校计算机能力挑战赛校赛,大题四题会三题,不会的卡在了输入这!!!(死了),真的好伤心(555,所以自学了一下。
常规输入输出:
1.cin:
cin是C++中,标准的输入流对象。
注意!!:cin以空格、tab、换行符作为分隔符。
#include <iostream>
using namespace std;
int main() {int num;cin >> num;cout << num << endl;return 0;
}
2、getline():
cin在输入字符串的时候,如果有空格,那么就会打断输入。因此就需要getline()函数了。
getline只有在遇到换行符才会终止输入。
格式为: getline(cin,字符串名)
#include <iostream>
#include <string>
using namespace std;
int main() {string str;getline(cin, str);cout << str << endl;return 0;
}
3、getchar():
getchar字如其名,是从缓冲区获取第一个字符。
#include <iostream>
using namespace std;
int main() {char ch;ch = getchar();cout << ch << endl;return 0;
}
数组的输入输出:
1.输入固定长度:
#include <iostream>
#include <vector>
using namespace std;
int main() {int n;cin >> n;vector<int> vec(n);for (int i = 0; i < n; i++) {cin >> vec[i];}for (int i = 0; i < vec.size(); i++) {cout << vec[i] << ' ';}return 0;
}
使用vector容器的话,也可以通过迭代器输出:
for (vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {cout << *it << ' ';
} //输出部分,以迭代器形式输出
也可以通过algorithm库的for_each函数和lambda表达式输出:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {int n;cin >> n;vector<int> vec(n);for (int i = 0; i < n; i++) {cin >> vec[i];}for_each(vec.begin(), vec.end(), [](int a) {cout << a << " ";});return 0;
}
2.长度不固定:
我就是在这里卡了啊(呜呜呜
完全不知道怎么写。
可以通过while(cin >> m){}解决:
#include <iostream>
#include <vector>
using namespace std;
int main() {int num;vector<int> vec;while (cin >> num) {vec.push_back(num);if (getchar() == '\n') break;}for (int i = 0; i < vec.size(); i++) {cout << vec[i] << ' ';}return 0;
}
空格不会输入进数组,在识别到换行符就结束。
3.以非空格隔开的元素输入
以字符串输入,然后在对其进行处理。
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {string str;getline(cin, str);vector<int> vec;int fast = 0;for (int slow = 0; slow < str.size(); slow++) {fast = slow;while (str[fast] != ',' && fast < str.size()) {fast++;}string tmp = str.substr(slow, fast - slow);vec.push_back(stoi(tmp));slow = fast;}for (int i = 0; i < vec.size(); i++) {cout << vec[i] << ' ';}return 0;
}
就这么多啦,当然还有sstream库的stringstream等,但不常用,可以自行取看看
周五弄个大的,数据库的数据分析到实施全过程。