编程中常常会用到连续多行输入的情况,如果事先知道要输入多少行的话,可以直接定义一个变量,然后用循环就可以实现了,但有时候事先并不知道,要输入多少行,于是就可以用到输入流碰到文件终止符的情况了,具体的操作就是ctrl+Z,然后按下回车键

程序例1

 #include<iostream>
#include<string>
#include<vector>
using namespace std; int main()
{
int num;
vector <int>nums;
while(cin>>num)
{
nums.push_back(num);
}
vector<int>::iterator it;
for(it=nums.begin();it!=nums.end();it++)
{
cout<<(*it)<<endl;
} return ;
}

程序例2

 1 #include<iostream>
2 #include<string>
3 #include<vector>
4 using namespace std;
5
6 int main()
7 {
8 string q;
9 vector<string>save_q;
10 while(getline(cin,q))
11 {
12 save_q.push_back(q);
13 }
14 vector<string>::iterator it;
15 for(it=save_q.begin();it!=save_q.end();it++)
16 {
17 cout<<(*it)<<endl;
18 }
19 return 0;
20 }

程序例3

 1 #include<iostream>
2 #include<string>
3 #include<vector>
4 using namespace std;
5
6 int main()
7 {
8
9 char * p;
10 vector<char *>save_p; //为什么用char * 就不能存进去值
11 p=new char[8];
12 while(cin.getline(p,8))
13 {
14 save_p.push_back(p);
15 p=new char[8];
16 }
17 vector<char *>::iterator it;
18 for(it=save_p.begin();it!=save_p.end();it++)
19 {
20 cout<<(*it)<<endl;
21 }
22
23
24
25 return 0;
26 }

程序例4

 #include<iostream>
#include<string>
#include<vector>
using namespace std; int main()
{ char p[];
//vector<char *>save_p; //为什么用char * 就不能存进去值
vector<string>save_p;
while(cin.getline(p,))
{
save_p.push_back(p);
//cout<<p<<endl;
}
//vector<char *>::iterator it;
vector<string>::iterator it;
for(it=save_p.begin();it!=save_p.end();it++)
{
cout<<(*it)<<endl;
} return ;
}

上面是四组测试程序,全部通过,但是第4四组,刚开始不小心写成了注释掉的那几行,结果总是错误,后来发现原因是这样的,char p[100];
是在编译的时候就已经确定了p的地址,所以每次输入的时候都是在往同一个地址对应的地方存值,导致vector<char *>里面存的值也都是同一个地址里面的数,所以每次存新值的时候都把前面的覆盖掉了。

连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)的更多相关文章

  1. C++ 中字符串标准输入的学习及实验

    声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1.cin>> cin使用空白(空格.制表符.回车)来确定字符串的结束位置. cin会将换行符留在输入输出队列中. #i ...

  2. 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人

    输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 ...

  3. 关于C++中字符串输入get与getline的区别

    最近使用C++中自己老是忘记的一个点,get与getline的区别. 1.get与getline get和getline所属iostream类,作用是读取一整行,通过换行符确定读取结束,他们都可以读取 ...

  4. MATLAB GUI程序设计中使文本框接收多行输入的方法

    对于文本框来说 Max属性于Min属性数值之差小于等于1时,仅接收单行输入 大于1时,接受多行输入 对于多行情况,set/get到的String应为cell 本系列文章允许转载,转载请保留全文! [说 ...

  5. 【Android 界面效果12】EditText中的多行输入问题

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 我们在使用EditText进行多行输入的时候,通常的写法如下: <EditText android ...

  6. C++中字符串换行(如何拆分为多行)

    在C/C++语言中,可能我们要书写的一个字符串太长了,放在一行上影响代码的可读性.这时我们就需要多行书写了.   字符串多行书写有两种规则:  1. 在字符串换行处加一个反斜杠’\’,下一行前不能有空 ...

  7. C/C++中字符串String及字符操作方法

    本文总结C/C++中字符串操作方法,还在学习中,不定期更新. .. 字符串的输入方法 1.单个单词能够直接用std::cin,由于:std::cin读取并忽略开头全部的空白字符(如空格,换行符,制表符 ...

  8. C语言中字符串详解

    C语言中字符串详解 字符串时是C语言中非常重要的部分,我们从字符串的性质和字符串的创建.程序中字符串的输入输出和字符串的操作来对字符串进行详细的解析. 什么是字符串? C语言本身没有内置的字符串类型, ...

  9. C++面向行输入:get()与getline()

    面向行的输入:get()与getline() 引入: char a = 's';//这样的语句合法 char b = "s";//不合法 /* "S"不是字符常 ...

随机推荐

  1. python学习小结7:变量类型

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  2. 在VisualStudio 2012上使用MVC3出现错误的解决办法

    1. 错误: 找不到方法:“System.Collections.Generic.Dictionary`2<System.String,BlockParser> System.Web.Ra ...

  3. CSS去除Chrome浏览器的控件默认样式

    html的input输入框在Chrome浏览器里是有默认样式的,当它获得焦点时,即使你没有为它设置:focus时的样式,Chrome浏览器还是会给它加上蓝色的边框,今天百度找到有个方法可以去除该默认样 ...

  4. win7下Chrome有两个图标的解决方法

    摘抄自:http://www.sevenforums.com/browsers-mail/238406-windows-7-taskbar-creating-double-google-chrome- ...

  5. ./configure --prefix=

    一直用这个选项prefix=,但不知道,啥意思. 转载自:----------------------------------------------------------------------- ...

  6. Codeforces Round #360 (Div. 2) E. The Values You Can Make 01背包

    题目链接: 题目 E. The Values You Can Make time limit per test:2 seconds memory limit per test:256 megabyte ...

  7. 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3

    // test14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  8. (ASP.NET)C#连接Oracle数据库示例(中文乱码问题解决)

    接手了一个遗留的ASP.NET系统,数据库用的是Oracle,以前没搞过.NET和Oracle数据库,数据库搞了半天才解决乱码问题,在此做个笔记备忘. 1.下载安装ODAC 1)请去Oracle官网下 ...

  9. 【POJ】【2151】Check the difficulty of problems

    概率DP kuangbin总结中的第8题 一开始题目看错导致想转移方程想错了……想成f[i][j]表示前 i 个队伍中最多的做出来 j 道题的概率……sigh 看了下题解……其实是对于每个队伍 i 单 ...

  10. 20160725noip模拟赛“Paodekuai” alexandrali

    T1: 我们可以用火柴棒来表示十进制下的0~9, 如图所示 现给定火柴数n, 问用这n根火柴能组成的最小数和最大数分别是多少. 所有火柴必须全部用完, 并且所有数字必须是正的且不含前缀零. [解题] ...