C++编程输入数组的处理——不给数组长度,直接给一行数组
来源:互联网 发布:手机域名注册官网 编辑:程序博客网 时间:2024/06/05 09:20
正常情况下,我们要从键盘读一个数组,一般会先告诉你一个数组大小size,然后可以创建相应的数组a[size](注:C++11允许变量作为数组长度)或者建立vector<T>(size). 然后就可以用一个size次的循环正好把size个数组元素存进去。
int main()
{
int n = 0;
cin >> n;
vector<int> p(n);
for(int i = 0; i < n; i++){
cin >> p[i];
}
return 0;
}
但是如果不给数组长度怎么办?直接扔给你一个行数组元素,怎么把他们存到对应整数数组中呢?
1.while(cin>>a[i++])好像是不可以的。cin>>操作符是根据后面变量的类型读取数据。
输入结束条件 :遇到Enter、Space、Tab键。 对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab)
在VS2103中,输入一行数组元素之后他不会终止,会让你继续输入。
2.这种方法使用getchar和cin共同进行处理。假设输入为-1,1,-1,1。首先,cin>>会根据i的类型读一个int,他遇到space会终止,因此第一次得到-1,接着每次getchar都会得到一个空格,这时候继续读就会读到第二个元素1,一直while到终止条件,读到一个换行符“\n”.
int main()
{
vector<int> a;
int i = 0;
do{
cin >> i;
a.push_back(i);
}while(getchar() !='\n');
return 0;
}
3.使用getline(cin, str)读到一行字符串,然后将getline得到的stringstream input中,然后input>>输出会被space截断,直接>>到一个int类型这种就可以自动实现类型转换,也很方便。当然也可以用atoi。
#include<sstream> //注意加这个头
int main()
{
string str,temp;
getline(cin, str);
int i = 0;
vector<int> p;
stringstream input(str);
while(input >> i){
p.push_back(i);
}
return 0;
}
阅读全文
0 0
- C++编程输入数组的处理——不给数组长度,直接给一行数组
- 数组直接赋值给结构体
- java编程:输入int数组的方法一(不知道长度)
- Java处理控制台输入的长度可变的数组数据
- 给一个数组,找出数组中最长的连续数列的长度
- 怎么从键盘给数组输入不定个数的元素?
- 《c和指针》3.1.3 二 、字符串常量 :不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组赋值
- 不能用字符串给字符数组赋值
- 数组给数组赋值问题
- c语言 数组名&&结构体名 为什么不能用数组名给数组赋值,结构体却可以
- sell 从文件读取一行赋值给一个数组
- [iOS]一行代码给中文数组添加索引
- $argv — 传递给脚本的参数数组
- C 结构整体赋值给数组
- C语言中给数组赋值
- C语言可以给字符数组赋值的方法
- C语言可以给字符数组赋值的方法
- C语言可以给字符数组赋值的方法
- Ambari学习笔记:初识Ambari,编译(存在问题)
- 进程通讯
- 【帝国CMS】灵动标签调用友情链接
- 从极大似然到EM算法
- C++find函数
- C++编程输入数组的处理——不给数组长度,直接给一行数组
- Spring事物在各种异常下的执行情况
- JSP的内置对象一
- jquery表单对象属性选择器:enabled、:disabled、:checked、:selected
- 对话框工具条的初步使用
- 玲珑杯round #20 E(主席树)
- 入坑系列之HAProxy负载均衡
- ceph 创建/删除存储池、设置存储池副本数、设置查看存储池配置 pool 配额
- 正确查看电脑内核数量和线程数的方法