首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >读取C++中的多行输入

读取C++中的多行输入
EN

Stack Overflow用户
提问于 2015-11-25 19:07:01
回答 3查看 11.9K关注 0票数 0

我尝试从C++中的命令行读取多行输入,并将它们存储到一个数组中。这是我的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
std::string line;
    int in;
    std::vector<std::string> v;

    while(std::getline(std::cin, line)){
        if(line == "^D") break;
        v.push_back(line);
    }
    for(auto it = v.begin(); it != v.end(); it++){
        std::cout<<*it<<std::endl;

    }

stdin进入无限循环,而我似乎想不出如何防止这种情况发生。基本上,目标行为是在没有任何输入的情况下连续按两次enter键来终止stdin循环并运行程序。

EN

回答 3

Stack Overflow用户

发布于 2015-11-25 19:20:25

我将测试字符串是否为空。如果是这样,就中断。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <string>
#include <vector>
#include <iostream>

using namespace std;

int main(){

string line;
vector<string> v;

while(std::getline(cin, line)){
    if (line.empty()){
        break;
    }
    v.push_back(line);
}

vector<string>::iterator it;

for (it = v.begin(); it != v.end(); it++){
    cout << *it << '\n';
}

return 0;
}
票数 8
EN

Stack Overflow用户

发布于 2015-11-25 19:18:49

如果您确实希望循环在两个Enter结束时停止,可以将条件更改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(line == "" && v.size() >= 1 && v.back() == "") break;

它应该检查当前击键和前一次击键是否为Enter's。v.size() >= 1只是检查v中是否有任何元素,如果没有任何其他元素,则停止Segfault。

请注意,数组中的最后一个元素将是一个空字符串,如果您想摆脱它,只需编写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
v.pop_back();

在第一个循环之外,它去掉了最后一个元素。

票数 2
EN

Stack Overflow用户

发布于 2022-02-18 08:20:25

while循环可能如下所示,仅使用.empty():

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while(std::getline(cin, line)){
    if(line.empty() && !v.empty() && v.back().empty()) {
        v.pop_back(); // remove the last empty line
        break;
    }
    v.push_back(line); 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33924558

复制
相关文章
连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)
编程中常常会用到连续多行输入的情况,如果事先知道要输入多少行的话,可以直接定义一个变量,然后用循环就可以实现了,但有时候事先并不知道,要输入多少行,于是就可以用到输入流碰到文件终止符的情况了,具体的操作就是ctrl+Z,然后按下回车键 程序例1 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 using namespace std; 5 6 int main() 7 { 8 int num; 9 v
用户1215536
2018/02/05
3.7K0
Java中Scanner的用法:单行/多行输入
以三行输入为例,第一行输入两个数字m,n,分别表示数组num1和num2的长度,第二行和第三行输入num1和num2的元素,以空格分隔。
全栈程序员站长
2022/09/09
2.1K0
Java中Scanner的用法:单行/多行输入
C++从键盘输入多行数据
使用 cin输入数据、vector创建数组存储数据,第一行输入两个数n, m,表示输入输入数据是 n 行 m列的二维数组,代码如下:
嵌入式视觉
2022/09/05
1.1K0
C++从键盘输入多行数据
使用C++中的cin函数来读取用户的输入
在C++中,cin是一个头文件iostream中的标准输入流,它用于从键盘读取输入。cin函数可以读取多种类型的数据,包括基本数据类型(如int、float、double)和字符串类型,其功能十分强大。使用cin函数读取用户输入可以让程序更加灵活、交互性更强。
很酷的站长
2023/08/25
1.5K0
使用C++中的cin函数来读取用户的输入
python3.6 输入多行,输出多行
import sys result=[] for line in sys.stdin:     if line[0] is '\n':         break     score = line.split()     score=list(map(int,score))     n=score[0]     score=score[1:]     scoresum=sum(score)-min(score)-max(score)     sc=float(scoresum)/(n-2)     result.append(round(sc,2)) for i in result:     print(format(i,'.2f'))
py3study
2020/01/09
2.6K0
thinkphp5 读取多行文本、读取文件分割多行文本
德宏大魔王
2023/08/08
2430
「译文」如何在YAML中输入多行字符串?
👉️URL: https://stackoverflow.com/questions/3790454/how-do-i-break-a-string-in-yaml-over-multiple-lines 📝Description: In YAML, I have a string that's very long. I want to keep this within the 80-column (or so) view of my editor, so I'd like to break the str
东风微鸣
2022/04/22
5.4K0
「译文」如何在YAML中输入多行字符串?
C++中关于几种输入方法的总结
C++中有很多关于输入的函数,比如cin、cin.get()、cin.getline()、getline()、gets()等等,很容易搞混,下面分别总结下,欢迎补充指正~~
zlmai
2018/08/26
1.4K0
exlipse同时操作多行。比如同时在多行同列输入相同的文字
先选择要操作的行,在同时按shift+alt+a,会将所选中的文字括起来,鼠标会变成十字图标,按住鼠标左键,在相应输入文字的位置上下拖动,会出现一个竖杠,此时即可开始输入文字了,并且所选中行都有哦,是不是很神奇。
全栈程序员站长
2022/06/30
9140
exlipse同时操作多行。比如同时在多行同列输入相同的文字
如何从Node.js中的命令行读取输入
您是否正在使用Node.js中开发一个小的CLI工具,并希望能够提示用户从命令行输入输入? Node.js正是为此目的提供了readline模块。 它提供了一个接口,用于从可读流(例如process.stdin)中一次读取一行数据。
ccf19881030
2020/10/26
8.6K0
微信小程序开发实战(9):单行输入和多行输入组件
input组件用于录入单行文本,尽管input的基本功能是文本录入,但该组件的属性还是比较多的,也比较复杂。下面是input属性的属性及其含义。
蒙娜丽宁
2020/07/16
3K0
微信小程序开发实战(9):单行输入和多行输入组件
C++ 中的基本输入\u002F输出
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
9200
C++中的输入函数scanf使用方法详解
scanf函数是C和C++中常用的输入函数之一,可以从用户输入的标准输入流stdin中读取格式为指定类型的数据。其基本用法如下:
很酷的站长
2023/08/25
2.7K0
C++中的输入函数scanf使用方法详解
vim中多行注释和多行删除命令「建议收藏」
1.首先在命令模式下,输入“:set nu”显示行号; 2.通过行号确定你要删除的行; 3.命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧 如果无意中删除错了,可以使用‘u’键恢复(命令模式下)
全栈程序员站长
2022/07/05
4K0
C++中限定输入整形,输入字符串如何处理异常[通俗易懂]
在C++中有时候我们会有一定的需求,需要限定用户只能够输入整形数字的时候。但是我们都能够知道用户哪里懂那么多,哪里管那么多,都是想要尝试一下的,那么这时候我们就必须需要对输入进行一定的处理了,不然随时有可能导致系统奔溃,那可是不行的喔。
全栈程序员站长
2022/07/11
9330
VI中的多行删除与复制
VI中的多行删除与复制 法一: 单行删除,:1(待删除行)d 多行删除 ,:1,10d 法二: 光标所在行,dd 光标所在行以下的N行,Ndd 方法1: 光标放到第6行, 输入:2yy 光标放到第9行, 输入:p 此方法适合复制少量行文本的情况,复制第6行(包括)下面的2行数据,放到第9行下面。 方法2: 命令行模式下输入 6,9 co 12 复制第6行到第9行之间的内容到第12行后面。 方法3: 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代 光标移到起始行,输入ma 光标移到结束行,输入mb
sanmutongzi
2020/03/04
5.9K0
Python中的单行、多行、中文注释
如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明。把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明:
py3study
2020/01/12
2.4K0
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.3K0
c++输入隐藏密码的实现
最近在用C++编写一个图书管理系统, 其中需要用户的登录, 原来没有想太多, 就用了普通的cin输入, 但是前两天组里的同学说, 要是输入密码的时候能将其隐藏就好了。以前做网站的时候, 有各种标签属性可以很方便的实现这个功能, 但是现在是控制台…不知道怎么搞了。最后百度谷歌后发现了一个很神奇的函数
零式的天空
2022/03/08
1.9K0
点击加载更多

相似问题

如何读取多行输入

22

读取多行用户输入

34

标准输入读取多行

31

读取多行输入的问题

125

C++多行输入

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文