5
2
a
b
int n, m;
char x, y;
cin >> n;
cin >> m;
cin >> x;
cin >> y;
// 验证输出
cout << n << ' ' << m << ' ' << x << ' ' << y << endl; // 5 2 a b
void SingleLineOfNum() {
vector<int> nums;
int temp;
while (cin >> temp) {
nums.push_back(temp);
if (cin.get() == '\n') break; // 对逗号的读取发生在这里,读取后就丢弃了
}
// 验证输出
for (auto n : nums) {
cout << n << " "; // 均输入 5 4 3 2 1 10
}
}
【注】cin
默认丢弃空格,tab 这些分隔符
:string
:stringstream,原理请见下方字符串章节void SingleLineOfString() {
string str;
string temp;
vector<string> res;
getline(cin, str);
stringstream ss(str);
// while (getline(ss, temp, ' ')) { // 针对空格分隔符
while (getline(ss, temp, ',')) { // 针对逗号分隔符
res.push_back(temp);
}
// 验证输出
for (auto r : res) {
cout << r << " "; // 均输出 zhang lili mengmeng
}
}
m
,n
表示 m
行数列,每行 n
个数字,字符,字符串。接着程序输入具体的内容// 输入示例 1,数字 + 空格分割
3 3 // 第一个 3 表示一共三行数列,第二个 3 表示每行数列有 3 哥元素
1 2 3
4 5 6
7 8 9
// 输入示例 2,字符 + 逗号分割
3 3
zhang,lili,mengmeng
wang,guo,qiqi
xu,coco,siri
void MultipleRowAndCol() {
int row, col;
// 先输入行和列的数量
cin >> row;
cin >> col;
vector<vector<int>> res(row, vector<int>(col, 0)); // 初始化一个二维的 vector
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
cin >> res[i][j];
}
}
// 验证输出
// 1 2 3
// 4 5 6
// 7 8 9
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
cout << res[i][j] << " ";
}
cout << endl;
}
}
vector
中函数原型:针对 string
类型时
size_t find (const string& str, size_t pos = 0) const noexcept;
描述:该函数可以返回要查找的标志符的下标(下标从 0)开始
函数原型:按删除长度 len
作为参数的函数原型
string& erase (size_t pos = 0, size_t len = npos);
描述:删除字符串指定位置字符以及之后 len 个字符
#include
using namespace std;
int main()
{
string s = "I am a programmer.";
int pos = s.find(".");
cout << pos << endl; // 17
s.erase(pos, 1);
cout << s << endl; // I am a programmer
return 0;
}
函数原型:
(1) istream& getline (istream& is, string& str, char delim);
(2) istream& getline (istream& is, string& str);
描述:该函数主要的作用是从输入流中提取字符然后将其存入字符串 string
中。
在下方的代码中,有两处使用到该方法。
第一处,我们用 getline
来从输入流中读取字符并存入字符串中,即 getline(cin, str);
第二处,我们利用 getline
来分割字符串,它的参数如下
描述:stringstream 是输入输出的字符串流对象,将字符串转换为字符串流,我们可以利用字符串流提供的多种功能操作字符串
#include
#include
#include
#include
using namespace std;
int main()
{
string str;
// 1. 输入字符串
getline(cin, str);
vector<string> res;
// 2. 将字符串转换为字符串流
stringstream input(str);
string temp; // 子串缓冲区
// 3. 设置分隔符
const char delim = ' ';
// 4. 分割字符串流,每个分割出来的子串放入 vector 中
while (getline(input, temp, delim)) {
res.push_back(temp);
}
// 【可选】5. 将 vector 中的子串重新拼接成完整字符串
string out;
for (int i = 0; i < res.size(); ++i) {
out += res[i];
if (i != res.size() - 1) out += " ";
}
cout << out << endl;
return 0;
}
:vector
:sortvoid ACMSort() {
vector<int> arr = { 23, 21, 55, 100, 1, 3,45,78 };
// sort(arr.begin(), arr.end()); // 默认从小到大
sort(arr.begin(), arr.end(), greater<int>()); // greater 使得其可以从大到小排列
// 验证结果
for (auto a : arr) {
cout << a << " ";
}
}
INT_MAX
(9,223,372,036,854,775,807,64 位下)INT_MIN
(–9,223,372,036,854,775,808,64 位下)