输入接口总结

输入一行数字

#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;
    }

注意

  1. 若输入需要进行分类或切割,使用cingetchar来一个一个读入,并用if来判断如何分割;
  2. 若要识别enter(回车),则使用getchar();
  3. 使用了cin后,若需要使用getline,需先使用cin.get() 不然会丢失数据;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值