文章目录
- 前言
- 一、输入输出方法
- 1、cin
- 2、getline()
- 3、getchar()
- 二、算法案例
- 1、一维数组
- 1.1 输入固定长度
- 1.2长度不固定
- 2、固定二维数组
- 3、以非空格隔开的元素输入
- 3、常见数据结构定义以及输入
- 3.1 链表
前言
C++中的输入输出函数有很多,我们本章只针对大部分算法题的输入输出。
一、输入输出方法
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()
遇到换行符结束
#include <iostream>
#include "string"
using namespace std;int main() {string str;getline(cin, str);cout << str << endl;return 0;
}
3、getchar()
从缓存区中读出一个字符
#include <iostream>
using namespace std;int main() {char ch;ch = getchar();cout << ch << endl;return 0;
}
二、算法案例
1、一维数组
1.1 输入固定长度
首先输入
待输入
元素个数,然后输入元素(以空格隔开)
注意这里的元素也可以是其他数据类型,比如字符串abc
,只需要修改vector
为对应的数据类型
#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;
}
1.2长度不固定
注意这里的元素也可以是其他数据类型,比如字符串
abc
,只需要修改vector
为对应的数据类型
#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;
}
2、固定二维数组
第一次输入行和列
第二次按照空格和换行符输入元素
#include <iostream>
#include <vector>using namespace std;int main() {int m;int n;cin >> m >> n;vector<vector<int>> vec(m, vector<int>(n));for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cin >> vec[i][j];}}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cout << vec[i][j] << ' ';}}return 0;
}
3、以非空格隔开的元素输入
如果输入的是
a,b,c
这种以非空格或者换行符隔开的,直接以字符串读入,然后分割
#include <iostream>
#include <vector>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;
}
3、常见数据结构定义以及输入
3.1 链表
#include <iostream>
using namespace std;// 链表定义
struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
};int main()
{ListNode* dummyHead = new ListNode(0);//虚拟头节点ListNode* pre = dummyHead;ListNode* cur = nullptr;int num;while(cin >> num){//设置为-1退出if(num == -1) break;cur = new ListNode(num);pre->next = cur;pre = cur;}cur = dummyHead->next;// 输出单链表的valuewhile(cur){cout << cur->val << ' ';cur = cur->next;}return 0;
}