笔试输入输出
头文件
//笔试时候常用的输入输出,可以使用
#include <bits/stdc++.h>
//来一次性输入所有的C++头文件包括:
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
一维数组输入
//空格分割
//6
//1 2 3 4 5 6
int num;
cin >> num;
vector<int> nums;
int temp_num;
for (int i = 0; i < num; i++)
{
cin >> temp_num;
nums.push_back(temp_num);
}
//逗号分割
//5
//1,2,3,4,5
int num;
cin >> num;
vector<int> nums;
int temp_num;
for (int i = 0; i < num-1; i++)
{
char a;
cin >> temp_num >>a;
nums.push_back(temp_num);
}
cin >> temp_num;
nums.push_back(temp_num);
二维数组输入
//2 3
//56 78
//23 45 12
int m, n;
cin >> m >> n;
vector<vector<int>> p(m, vector<int>(n));
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
cin >> p[i][j];
输入字符串,有空格
string str;
// cin >> str; 输入 uuu ioi 输出 uuu
//getline(cin, str); 输入 i love you 输出 i love you
getline(cin, str);
以‘ ,’ 分割字符串输入
//zhoulifeng,wangziling,rx
char str[3][11];
cin.getline(str[0], 11, ','); //接收最多10个字符 ,以‘,’作为结束符
cin.getline(str[1], 11, ',');
cin.getline(str[2], 11); //默认结束符 enter
多组输入,几组不确定
/*
2
67 89
4
12 34 56 78
...
*/
vector<vector<int>> a;
int n;
while (cin >> n) { //遇到文件结束符停止,windods命令行输入文件结束符,ctrl+z然后enter
vector<int> b(n,0);
for (int i = 0;i < n;i++)
cin >> b[i];
a.push_back(b);
}
一行数据不确定多少,以enter结尾
//1 2 3 4 5...
//8 9 6...
int m, n;
vector<int>a, b;
while (cin >> m)
{
a.push_back(m);
if (cin.get() == '\n') break;
}
while (cin >> n)
{
b.push_back(n);
if (cin.get() == '\n') break;
}
使用C++的stringstream流
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vec;
string stmp;
int itmp;
cin>>stmp;
replace(stmp.begin(), stmp.end(), ',', ' ');//#include <algorithm>
// for(int i=0;i<stmp.size();++i){
// if(stmp[i] == ',') stmp[i] = ' ';
// }
stringstream ss;//#include <sstream>
ss<<stmp;
while(ss>>itmp){
vec.push_back(itmp);
}
ss.clear();
cout << "输出" << endl;
for (int i = 0; i < vec.size(); ++i){
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
1,2,3,4
输出
1 2 3 4
请按任意键继续. . .
读取以逗号分隔的一串数字
#include<iostream>
#include<vector>
#include<sstream>
using namespace std;
int main()
{
string s;
vector<int> v;
getline(cin, s);
istringstream is(s);
int inter;
char ch;
while (is >> inter)
{
v.push_back(inter);
is >> ch;
}
for(int i=0;i<v.size();i++)
cout<<v[i]<<" ";
cout<<endl;
return 0;
}
未告知输入个数,以回车结束
vector<int> vec;
int tmp;
char ch = 'a';
for (int i = 0; i<100 && ch != '\n'; i++)
{
scanf_s("%d", &tmp, 1);//数字
//cout << "get_tmp:" << tmp << " ";
ch = getchar(); //空格或逗号
//cout << "get_ch:" << ch << endl;
vec.push_back(tmp);
}
cout << endl;
输入字符串,读入是数字的部分
#include <iostream.h>
int main()
{
char a[50]="1ab2cd3ef45g";
char b[50];
int cnt_index=0,cnt_int=0;
//cnt_int 用于存放字符串中的数字.
//cnt_index 作为字符串b的下标.
for(int i=0;a[i]!='\0';++i) //当a数组元素不为结束符时.遍历字符串a.
{
if(a[i]>='0'&& a[i]<='9') //如果是数字.
{
cnt_int*=10;
cnt_int+=a[i]-'0'; //数字字符的ascii-字符'0'的ascii码就等于该数字.
}
else if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')) //如果是字母.
{
b[cnt_index++]=a[i]; //如果是字符,则增加到b数组中.
}
}
b[cnt_index++]='\0'; //增加字符串结束符.
cout<<b<<endl; //输出字符串. (abcdefg)
cout<<cnt_int<<endl; //输出数字.(12345)
return 0;
}