在我们做类似ACM题目的时候,经常会遇到要求我们动态输入数据,本博客总结了利用Vector进行多种类型动态输入数据的方法,首先要介绍两个函数:
-
getch、getchar函数,两个函数每次都只能从控制台读入一个字符
- getch:
- 所在头文件:conio.h
- 用途:从控制台读取一个字符,但不现实在屏幕上
- 函数原型: int getch(void)
- getchar:
- 用户输入的字符被放在键盘缓冲区中,直到用户按下回车为止
- getch:
-
不同平台,按下回车,getch()将返回不同的数值,而getchar()将统一返回10(即\n)
实现代码如下:
动态输入char类型
#include<iostream>
#include<cmath>
#include <conio.h>
#include<vector>
using namespace std;
int main()
{
vector<char> vec;
char c;
while(c = getchar())
{
//判断回车ASCII码
if(c == 10)
break;
//除去空格ASCII码
if(c != 32)
{
vec.push_back(c);
}
}
int k = vec.size();
for(int i = 0;i<k;i++)
{
cout<<vec[i]<<" ";
}
cout<<endl;
动态输入int ,float, double类型
#include<iostream>
#include<cmath>
#include <conio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vec;
int a;
while(cin>>a)
{
//要先push_back(a)再判断,否则最后一个跟回车混在一起,没有push进去
vec.push_back(a);
//判断回车跳出循环,getchar()只能读取一个字符
if(getchar()==10)
{
break;
}
}
int k = vec.size();
for(int i = 0;i<vec.size();i++)
{
cout<<vec[i]<<" ";
}
cout<<"\n seccuss"<<endl;
}