c++常用的输入输出方法
案例
一维数组:
输入包含一个整数n代表数组长度。
接下来包含n个整数,代表数组中的元素
3
1 2 3
int n;
scanf("%d",&n); // 读入3,说明数组的大小是3
vector<int> nums(n); // 创建大小为3的vector<int>
for(int i = 0; i < n; i++) {
cin >> nums[i];
}
// 验证是否读入成功
for(int i = 0; i < nums.size(); i++) {
cout << nums[i] << " ";
}
cout << endl;
若是不限定输入数据的大小
vector<int> nums;
int num;
while(cin >> num) {
nums.push_back(num);
// 读到换行符,终止循环
if(getchar() == '\n') {
break;
}
}
// 验证是否读入成功
for(int i = 0; i < nums.size(); i++) {
cout << nums[i] << " ";
}
cout << endl;
二维数组
例如
输出N行,每行M个空格分隔的整数。每个整数表示该位置距离最近的水域的距离。
4 4
0110
1111
1111
0110
int n,m;
int res[n][m];
//vector<vector<int>>res(n,vector<int>(n));
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%d",&res[i][j]);
}
}
// 验证是否读入成功
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
再附加每行数据用特殊字符给隔开的限制
int m; // 接收行数
int n; // 接收列数
cin >> m >> n;
vector<vector<int>> matrix(m);
for(int i = 0; i < m; i++) {
// 读入字符串
string s;
getline(cin, s);
// 将读入的字符串按照逗号分隔为vector<int>
vector<int> vec;
int p = 0;
for(int q = 0; q < s.size(); q++) {
p = q;
while(s[p] != ',' && p < s.size()) {
p++;
}
string tmp = s.substr(q, p - q);
vec.push_back(stoi(tmp));
q = p;
}
//写入matrix
matrix[i] = vec;
vec.clear();
}
// 验证是否读入成功
for(int i = 0; i < matrix.size(); i++) {
for(int j = 0; j < matrix[i].size(); j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
结构体输入:
第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
… … …
第 n+1 行:第 n 个学生的姓名 学号 成绩
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
struct Student{
char name[11];
char subject[11];
int score;
};
int main(){
int n;
scanf("%d",&n);
Student* s = new Student[n];
for(int i=0;i<n;i++){
cin>>s[i].name>>s[i].subject>>s[i].score;
}
return 0;
}