#include
// 1 2 3 4 5
vector nums(5);
for (int i = 0; i < nums.size(); i++) {
cin >> nums[i];
}
// 批量输出
for (auto it = nums.begin(); it != nums.end(); it++) {
cout << *it << " ";
}
读取一整行字符串(包括空格等字符),默认换行符结束。
两种用法:
#include
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);
istream& getline (istream& is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
string str;
getline(cin, str, '#'); // 以#作为结束符
#include
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim);
char str2[10];
cin.getline(str2, 10);
while (getline(cin, str), str != "#") {
// 循环
}
#include
1 2 3 4 5 ……
vector Arr; // vector str;
int arr;
while (cin >> arr) {
Arr.push_back(arr);
// 读到换行符结束循环
if (getchar() == '\n')
break;
}
n n个数
1 2
2 1 2
3 1 2 3
……
0
int n;
while (cin >> n && n != 0) {
int tmp = 0;
while (n--) {
cin >> tmp;
}
}
不知道多少组,不知道组内多少数
int cur;
while (cin >> cur) {
if (cin.get() == '\n') {
// ***
}
}
定义char存储每行逗号。注意最后一个元素后没有逗号,要单独处理。
1,2,3,4,5,……
int n;
cin >> n;
char s;
vector nums(n);
for (int i = 0; i < n - 1; i++) {
cin >> nums[i] >> s;
}
cin >> nums[n - 1];
hello,world,
vector strs;
string s; // 读入字符串
getline(cin, s);
int i = 0; // 分隔
for (int j = 0; j < s.size(); j++) {
i = j;
while (s[i] != ';' && i < s.size()) {
i++;
}
string tmp = s.substr(j, i - j);
strs.push_back(tmp);
j = i;
}
5
101,1
102,2
103,3
104,1,2,3,4
105,5
int n, num;
cin >> n;
vector> nums(n);
for (int i = 0; i < n; ++i)
{
while (cin >> num)
{
nums[i].push_back(num);
if (cin.get() == '\n')
break;
}
}
vector strs;
string s;
string tmp;
while (cin >> s) {
for (int i = 0; i < s.size(); i++) {
if (s[i] != ',') {
tmp += s[i];
}
else {
strs.push_back(tmp);
tmp.clear();
}
}
strs.push_back(tmp); // 最后一个字符串后面没有逗号
tmp.clear();
sort(strs.begin(), strs.end()); // 一些操作
strs.clear();
}
#include
printf("格式控制字符串", 输出表列);
-格式控制字符串:%[标志][最小宽度][.精度][类型长度]类型
类型 对应数据类型 含义 示例 f
lf
float
double
浮点数输出精度
(可混用)
printf("%.2f", 0.123);
// 0.12
e / E float(double) 科学计数法
(e/E代表输出时的大小写)
printf("%e", 0.000000123);
// 1.230000e-07
g / G float(double) 自动选择以最短的方式输出
(大小写对应科学计数法e的大小写)
printf("%G", 0.000000123);
// 1.23E-07
c char 把输入的数字按ASCII码转为对应字符输出 printf("%c", 65);
// A
#include
控制精度时会四舍五入
float a = 1.23456789;
// 控制整个数的输出精度
cout << setprecision(2) << a; // 1.2
// 控制小数位输出精度
// 也可以预先 cout.setf(ios::fixed);
cout << fixed << setprecision(2) << a; // 1.23
// 添加fixed后效果会一直保留,消除fixed效果
cout.unsetf(ios::fixed);
// 重新设置精度
cout.precision(6);
输出浮点数,保留两位小数
单精度 f,双精度 lf,其实可以混用(scanf不能混用)
printf("%.2f", test);
printf("%.2lf", test);
int m, n; // m×n
cin >> m >> n;
vector> Arr2(m, vector(n));
string test[2];
test[0] = "hahaha";
test[1] = "nihao";
cout << test[0] << endl; // hahaha
cout << test[0][1]; // a