首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >字符串大小限制输入cin.get()和getline()

字符串大小限制输入cin.get()和getline()
EN

Stack Overflow用户
提问于 2018-06-09 01:56:39
回答 1查看 1.7K关注 0票数 0

在这个项目中,用户可以输入一个文本(,最多140个字符,)。因此,对于这个限制,我曾经使用过getline()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  string text;
  getline(cin, text);
  text = text.substr(1, 140);

但是在这种情况下,cout << text << endl;的结果是一个空字符串。

所以我使用了cin.get(),比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cin.get(text, 140);

这一次我得到了一个错误:没有调用‘std::basic_istream::get(std::__cxx11::string&,int的匹配函数)‘

注意,我已经包括了<iostream>

所以问题是我如何解决这个问题为什么会发生这种情况?

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 06:49:39

您的第一种方法是正确的,只需进行一次更正-您需要使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text = text.substr(0, 140);

而不是text = text.substr(1, 140);。C/C++中的容器(包括字符串)从索引0开始,您请求从位置1中修剪字符串。这很好,但是如果字符串恰好只有一个字符长,调用text.substr(1, 140);不一定会导致程序崩溃,但也不会在期望的输出中结束。

根据本源,如果调用的起始位置大于字符串长度,substr将抛出超出范围的异常。对于一个字符串,位置1将等于字符串长度,但返回值没有意义(实际上,它甚至可能是一种未定义的行为,但我找不到该语句的确认--在您和我的情况下,调用它返回一个空字符串)。我建议您自己在上面链接后面的交互式编码部分中测试它。

第二种方法试图将一个字符串传递给一个函数,该函数需要C风格的字符数组。同样,还可以找到更多的这里。正如错误描述的那样,编译器无法找到匹配的函数,因为参数是字符串而不是char数组。有些函数将执行字符串到char的转换,但这里不是这样的。您可以自己将字符串转换为char数组,例如,描述了在这个岗位上,但第一种方法更符合C++实践。

最后一个注意事项--目前你只读了一行输入,我想你会想要改变这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50773022

复制
相关文章
cin.get()函数和getline函数
cin.getline函数和get用法和功能相似,区别只在于,cin.getline()在行的末尾舍弃换行符,而get()会保留换行符。
灯珑LoGin
2022/10/31
4660
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
get, getline, gets, getchar 用法「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/18
6560
C++中cin的详细用法
cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象,也是ostream 类的对象。这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。
恋喵大鲤鱼
2018/08/03
7.8K0
C++中cin的详细用法
C++中关于几种输入方法的总结
C++中有很多关于输入的函数,比如cin、cin.get()、cin.getline()、getline()、gets()等等,很容易搞混,下面分别总结下,欢迎补充指正~~
zlmai
2018/08/26
1.4K0
c++ cin, get学习笔记
接收一个可以包含空格的string类字符串,需要包含头文件#include <string>
LRainner
2020/07/17
7960
7月份刷题总结(水题总结)
3. 数组过大超过限制,可定义为全局变量。开一个20000大小的数组,用memset函数赋初值。
天道Vax的时间宝藏
2021/08/11
2130
C++输入输出流
要点 cin>> 最常见的是获取输入的一个字符或数字。cin>>会自动过滤掉不可见字符(如空格、换行、回车等) get(c) 用来接收字符,只获取一个字符,可以接收空格、换行、回车,遇回车结束。 cin.get(数组名,接收字符数目) 用来接收字符串,可以接收空格,遇回车结束。由于字符串最后一个字符是'\0',所以当输入中超过len-1个字符时,实际只能接受len-1个字符。 cin.get() 没有参数。主要用于舍弃输入流中不需要的字符,或者舍弃回车,即舍弃输入流中的一个字符。 cin.getli
用户2929716
2018/08/23
7650
C++输入输出流
c++之复合类型笔记(一)
int num_elements=sizeof things/sizeof(short);)
艰默
2022/11/22
4370
C++随记(一)---字符串数组的输入问题
本文讲述了一位程序员在C++编程中遇到的字符串数组输入问题,以及解决方案。主要包括两个部分:1. 使用getline()函数进行面向行的输入,需要注意缓冲区的长度和清除缓存区内的残留数据。2. 使用get()函数进行面向行的输入,需要注意正确读取输入中的换行符。
TeeyoHuang
2017/12/28
1.5K0
C++随记(一)---字符串数组的输入问题
使用cin进行输入
在使用char参数或没有参数的情况下,get()方法读取下一个输入字符,即使该字符是空格、制表符或换行符。
艰默
2023/02/26
1.1K0
使用cin进行输入
getline();和reserve();
getline() 语法: istream &getline( char *buffer, streamsize num ); istream &getline( char *buffer, streamsize num, char delim );
Max超
2019/01/21
6070
C++ 练气期之细聊字符串
程序不仅仅用于数字计算,现代企业级项目中更多流转着充满了烟火气的人间话语。这些话语,在计算机语言称为字符串。
一枚大果壳
2022/08/23
1.3K0
C++ 练气期之细聊字符串
postfix限制大小
message_size_limit = 10485760 //限制附件和邮箱大小
呆呆
2021/05/26
2.6K0
nginx限制上传大小和超时时间设置说明/php限制上传大小
现象说明: 在服务器上部署了一套后台环境,使用的是nginx反向代理tomcat架构,在后台里上传一个70M的视频文件,上传到一半就失效了! 原因是nginx配置里限制了上传文件的大小 client_max_body_size:这个参数的设置限制了上传文件的大小,可以在http、server、location三个区域里配置 [root@dev-huanqiu ~]# cat /Data/app/nginx/conf/nginx.conf ....... ....... http { include
洗尽了浮华
2018/01/23
8.2K0
C++的cin、getline()和cin.getline()
但是有一天你会发现你在试图读入一串含有空格的字符串的时候,cin是干不了的,没错,因为cin是读不了空格的。
叶茂林
2023/07/28
2030
C++的cin、getline()和cin.getline()
EasyC++10,字符串初体验
字符串就是连续的一连串字符,在C++当中, 处理字符串的方式有两种类型。一种来自于C语言,也被称为C风格字符串。另外一种是基于string类库。
TechFlow-承志
2022/08/26
6760
EasyC++10,字符串初体验
C++字符串输入函数小结
看了网上有人写的,不是很全,而且还有几处错误,所以自己重新找了一下MSDN中的相关内容。
用户7886150
2021/02/17
8370
去除限制 Post 请求大小限制
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161067.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/09
2.1K0
点击加载更多

相似问题

使用cin.getline()和cin.get()

10

std::getline()和std::cin.get()的问题

27

cin.get()和cin.getline()之间的区别

57

cin和getline跳过输入

46

Mac上的C++ std::getline大小限制

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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