Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)

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

作者头像
用户1215536
发布于 2018-02-05 06:33:14
发布于 2018-02-05 06:33:14
3.7K01
代码可运行
举报
运行总次数:1
代码可运行

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

程序例1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int num;
 9     vector <int>nums;
10     while(cin>>num)
11     {
12         nums.push_back(num);
13     }
14     vector<int>::iterator it;
15     for(it=nums.begin();it!=nums.end();it++)
16     {
17         cout<<(*it)<<endl;
18     }
19 
20     return 0;
21 }

程序例2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-03-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++ 中字符串标准输入的学习及实验
声明:下面实验中[]里面表示要输入里面的符号,[]符号本身并未输入 1、cin>> cin使用空白(空格、制表符、回车)来确定字符串的结束位置。 cin会将换行符留在输入输出队列中。 1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 char p[100]; 7 char q[100]; 8 cin>>p; 9 cout<<p; 10 cin>>q; 11 co
用户1215536
2018/02/05
1.4K0
在 C++ 中标记字符串与getline() 函数和字符数组
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
1.5K0
C++的输入输出特点、运算符重载及标准模板库STL
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。 注意:cin>>和cin.get()都残留数据不会出错,但是cin.getline会报错,下面的示例中都有体现。
Here_SDUT
2022/06/29
8260
C++的输入输出特点、运算符重载及标准模板库STL
C++ 输入ctrl+z 不能再使用cin的问题
问题介绍: 程序步骤是开始往容器里面写数据,以Ctrl+Z来终止输入流,然后需要输入一个数据,来判断容器中是否有这个数据。
zy010101
2019/05/25
9110
❤ 挑战C站最强C++ STL标准库总结(内含大量示例)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,(ノ´▽`)ノ♪-》点击这里->一个宝藏级人工智能教程网站。
全栈程序员站长
2022/09/09
1.4K0
❤ 挑战C站最强C++ STL标准库总结(内含大量示例)
第七篇:两个经典的文件IO程序示例「建议收藏」
本文分析两个经典的C++文件IO程序,提炼出其中文件IO的基本套路,留待日后查阅。
全栈程序员站长
2022/07/19
2530
【C++】C++提高编程部分-泛型编程-STL
函数模板作用: 建立一个通用的函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。
半生瓜的blog
2023/05/12
2.7K0
【C++】C++提高编程部分-泛型编程-STL
C++ STL 详解
以前一直在用C语言,很多数据结构都是自己造的,比如链表、队列等,但是搞竞赛还是C++ 有优势,感觉好多题都是针对C++ 出题的  所以打算学学C++,所以现在先整理一下STL中一些最常用的容器的使用方法和迭代器备用。
Fivecc
2022/11/21
1.2K0
C++   STL 详解
【C++】基础:STL字符串库string
在C++中,std::string是一个表示字符串的类,它是C++标准库中的一部分。std::string提供了许多功能和操作,使得字符串的处理更加方便和高效。
DevFrank
2024/07/24
1680
【C++】基础:STL字符串库string
C++ STL 标准模板库(容器总结)算法
C++ 标准模板库STL,是一个使用模板技术实现的通用程序库,该库由容器container,算法algorithm,迭代器iterator,容器和算法之间通过迭代器进行无缝连接,其中所包含的数据结构都是目前最优解,该库既能保证软件代码的高可复用性,又能保证代码具有相当高的执行效率,STL库是ANSI/ISO的C++标准的具体实现,任何标准库的实现都是以源码形式释出的.
王瑞MVP
2022/12/28
2.3K0
c++字符串分割
c++练习。 实现的功能是根据分割符将字符串分割成多个字符串,存进堆上的vector容器中。 头文件stringFunctions.h中定义分割函数: #ifndef STRINGFUNCTIONS_H_INCLUDED #define STRINGFUNCTIONS_H_INCLUDED #include <vector> using namespace std; vector<char*> * split(char* str, char separator='\t') { vec
用户6021899
2021/07/05
1.1K0
C++数据个数未知情况下的输入方法
我们经常需要输入一串数,而数据个数未知。这时候就不能以数据个数作为输入是否结束的判断标准了。
xiaoxi666
2018/10/29
1.7K0
IO流C++
4. 总结 类fstream和stringstream都是继承类iostream的,输入继承istream,输出继承ostream,所以能都使用istream的地方都可以使用ifstream和istringstream,对ostream同理。
Enterprise_
2019/02/26
6770
C++ STL (标准模板库) 详细内容讲解
顺序容器有以下三种:可变长动态数组 vector、双端队列 deque、双向链表 list。
杨鹏伟
2020/09/11
2.1K0
【C++】STL的基本用法
vector 是 C++ 标准库提供的一个动态数组容器,它可以自动扩展和收缩,使其非常适合存储和管理可变数量的元素。
SarPro
2024/02/20
1950
c++ list, vector, map, set 区别与用法比较
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。 Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而List可以任意加入。 Map,Set属于标准
hbbliyong
2018/03/06
10.2K0
c++ list, vector, map, set 区别与用法比较
C++ Primer Plus习题及答案-第十六章
因为string对象提供了自己的内存管理功能,所以不需要再显式定义复制构造函数、析构程序和赋值运算符。
艰默
2023/02/26
9880
C++ Primer Plus习题及答案-第十六章
【编码狂想】探索C++ STL:提升编程效率的强大工具集
键盘输入 5 个整数,将这些数据保存到 vector 容器中,采用正向迭代器和反向迭代器分别遍历 vector 中的元素并输出。
SarPro
2024/02/20
1520
C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用
一.find运算 假设有一个int型的vector对象,名为vec,我们想知道其中是否包含某个特定值。 解决这个问题最简单的方法时使用标准库提供的find运算: 1 // value we'll look for 2 int search_value = 42; 3 4 //call find to see if that value is present 5 vector<int>::const_iterator result = find(vec.begin() , vec.end() ,
猿人谷
2018/01/17
1.9K0
C++字符串输入函数小结
看了网上有人写的,不是很全,而且还有几处错误,所以自己重新找了一下MSDN中的相关内容。
用户7886150
2021/02/17
8500
相关推荐
C++ 中字符串标准输入的学习及实验
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验