输入一行数字
#include<iostream>
#include<vector>
using namespace std;
//已知输入数字的个数
int n;
cin >> n; //输入个数
vector<int> number;
for(int i=0;i<n;++i)
{
int num;
cin >> num;
number.push_back(num);
}
//不知输入的个数:
vector<int> number2;
int num;
while(cin >> num)
{
number2.push_back(num);
}
cin不识别空格,回车符,故而只有当输入不再是数值时才结束循环(第二种);
输入一行字符串
#include<iostream>
#include<string>
using namespace std;
//已知最大不会超过某个数
const int N = 100;
char s[N];
cin.getline(s,N);
//未给范围
string s1;
getline(cin,s1);
二者都是读取一行,且都不保存回车符;
输入多行数字
#include<iostream>
#include<vector>
using namespace std;
//
const int row = 3;
const int col = 5;
int number[row][col];
for(int i =0;i<row;++i)
{
for(int j=0;j<col;++j)
{
cin >> number[i][j];
}
}
// 每行的数字个数不知道的时候
vector<int> row_num;
vector<vector<int> > number2;
for(int i=0;i<row;++i)
{
char num;
int real_num;
while(num = getchar()) //getchar()输入一个字符,存在num中(可识别空格,换行符)
{
if(num == '\n') break; //若换行,则进入下一个循环;
else if(num == ' ')
{
row_num.push_back(real_num);
real_num = 0;
}
else
{
real_num = real_num*10 + num - '0'; // 计算数值
}
}
row_num.push_back(real_num); //存入最后一个数,因最后一个数末尾是'\n'而不是‘ ’
number2.push_back(row_num);
row_num.clear();
}
输入多行字符串
#include<iostream>
#include<vector>
#include<string>
using namespace std;
//已知行和列数或已知行列最大值
const int row = 5;
const int col =9;
char s[row][col];
for(int i=0;i<n;++i)
{
cin.getline(s[i],row); //一行一行存入,且已字符的形式
}
//不知每一行的范围(每一行范围可能不同)
vector<string> S:
for(int i=0;i<n;++i)
{
string s1;
getline(cin,s1);
S.push_back(s1);
}
混合输入需分割
#include<string>
#include<vector>
#include<iostream>
using namespace std;
//不知每一行的范围(每一行范围可能不同)
// 例如输入:
// Jack,Tom
// Anny,Jack,Sunny
n = 2;
vector<vector<string> > name1;
for(int i=0;i<n;++i)
{
char now;
string temp;
vector<string> name;
while(now = getchar())
{
if(now == '\n') break;
if(now == ',') // 证明读取完成一个单词;存入并清零
{
name.push_back(temp);
temp.erase(temp.begin(),temp.end());
}
else
temp+=now; // 将单个字母加入,以此来组成单词
}
name.push_back(temp);
name1.push_back(name);
}
for(int i=0;i<n;++i) // 输出
{
int len = name1[i].size();
for(int j=0;j<len;++j)
cout << name1[i][j] << ' ';
cout << endl;
}
注意
- 若输入需要进行分类或切割,使用
cin
或getchar
来一个一个读入,并用if来判断如何分割; - 若要识别enter(回车),则使用
getchar()
; - 使用了cin后,若需要使用getline,需先使用
cin.get()
不然会丢失数据;