cin输入字符串的问题_cin string出错-程序员宅基地

cin输入字符串

  1. cin
  2. cin.get()
  3. cin.getline()
  4. gets
  5. getchar()
  6. gcount
  7. get
  8. getline
  9. ignore
  10. peek
  11. read
  12. readsome
  13. putback
  14. unget 
    编写acm题目时遇到一个问题,在输入string类型数据时,出现“错误 1 error C2679: 二进制“>>”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换) ”,然后查找cin函数的用法,在此做个简单的总结,以免以后忘记。 
    首先cin、cout函数包含在头文件中,而class std::iostream中Input/output stream如下图所示: 
    输入输出流结构示意图

列表内容

  1. cin>> 
    用法1:最基本,也是最常用的用法,输入一个数字:
#include <iostream> 
using namespace std; 
main () 
{ 
int a,b; 
cin>>a>>b; 
cout<<a+b<<endl; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输入:2[回车]3[回车] 
输出:5

注意:>> 是会过滤掉不可见字符(如 空格 回车,TAB 等) 
cin>>noskipws>>input[j];//不想略过空白字符,那就使用 noskipws 流控制

用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束

#include <iostream> 
using namespace std; 
main () 
{ 
char a[20]; 
cin>>a; 
cout<<a<<endl; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输入:jkljkljkl 
输出:jkljkljkl

输入:jkljkl jkljkl //遇空格结束 
输出:jkljkl

2、cin.get()

用法1: cin.get(字符变量名)可以用来接收字符

#include <iostream> 
using namespace std; 
main () 
{ 
char ch; 
ch=cin.get();               //或者cin.get(ch); 
cout<<ch<<endl; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输入:jljkljkl 
输出:j

用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

#include <iostream> 
using namespace std; 
main () 
{ 
char a[20]; 
cin.get(a,20); 
cout<<a<<endl; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输入:jkl jkl jkl 
输出:jkl jkl jkl

输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 
输出:abcdeabcdeabcdeabcd (接收19个字符+1个’\0’)

用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.

cin.get()用法与cin.get(char ch)一样,默认是接收一个字符,以Tab键、Enter键还有Space键为结束。

3、cin.getline() // 接受一个字符串,可以接收空格并输出

#include <iostream> 
using namespace std; 
main () 
{ 
char m[20]; 
cin.getline(m,5); 
cout<<m<<endl; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输入:jkljkljkl 
输出:jklj

接受5个字符到m中,其中最后一个为’\0’,所以只看到4个字符输出;

如果把5改成20: 
输入:jkljkljkl 
输出:jkljkljkl

输入:jklf fjlsjf fjsdklf 
输出:jklf fjlsjf fjsdklf

//延伸: 
//cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符) 
//当第三个参数省略时,系统默认为’\0’ 
//如果将例子中cin.getline()改为cin.getline(m,5,’a’);当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk

当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:

#include<iostream> 
#include<string> 
using namespace std;

main () 
{ 
char m[3][20]; 
for(int i=0;i<3;i++) 
{ 
cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl; 
cin.getline(m[i],20); 
}

cout<<endl; 
for(int j=0;j<3;j++) 
cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

请输入第1个字符串: 
kskr1

请输入第2个字符串: 
kskr2

请输入第3个字符串: 
kskr3

输出m[0]的值:kskr1 
输出m[1]的值:kskr2 
输出m[2]的值:kskr3

4、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include”

#include<iostream> 
#include<string> 
using namespace std; 
main () 
{ 
string str; 
getline(cin,str); 
cout<<str<<endl; 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输入:jkljkljkl 
输出:jkljkljkl

输入:jkl jfksldfj jklsjfl 
输出:jkl jfksldfj jklsjfl

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lansebandaoti/article/details/82527923

智能推荐

九大角度全方位对比Android、iOS开发_ios 开发角度-程序员宅基地

文章浏览阅读784次。发表于10小时前| 2674次阅读| 来源TechCrunch| 19 条评论| 作者Jon EvansiOSAndroid应用开发产品编程语言JavaObjective-C摘要:即便Android市场份额已经超过80%,对于开发者来说,使用哪一个平台做开发仍然很难选择。本文从开发环境、配置、UX设计、语言、API、网络、分享、碎片化、发布等九个方面把Android和iOS_ios 开发角度

搜索引擎的发展历史

搜索引擎的发展历史可以追溯到20世纪90年代初,随着互联网的快速发展和信息量的急剧增加,人们开始感受到了获取和管理信息的挑战。这些阶段展示了搜索引擎在技术和商业模式上的不断演进,以满足用户对信息获取的不断增长的需求。

【Elasticsearch<一>✈️✈️】简单安装使用以及各种踩坑

本地实现 Elasticsearch、kibana 管理工具、IK 分词器 的安装部署以及初步使用(以及填坑策略)

Word插件开发

创建一个新的 Office 插件项目:在 Visual Studio 中,选择"文件" -> “新建项目”,然后在模板中选择"Office/SharePoint",选择适当的 Office 插件项目模板,如 Word 插件、Excel 插件或 PowerPoint 插件。设计用户界面:在解决方案资源管理器中,打开你的插件项目,并在其中打开相应的 Office 文件(如 Word 文件、Excel 文件或 PowerPoint 文件)。你可以在 Office 应用中测试插件的功能,并在开发过程中进行调试。

便携式iv检测仪解析

在应用场景方面,便携式IV功率测试仪广泛应用于光伏电站的日常运维、光伏组件生产过程中的质量控制以及光伏项目的前期评估等环节。在光伏电站运维中,定期对光伏组件进行IV测试,可以及时发现性能下降或损坏的组件,为电站的运维提供有力支持。首先,从工作原理来看,光伏电站便携式IV功率测试仪通过模拟太阳光照射光伏组件,并测量组件在不同电压下的电流输出,从而绘制出IV曲线。此外,测试仪还可以计算光伏组件的功率输出、转换效率等参数,为用户提供全面的性能评估。

postgresql 索引之 hash_load_categories_hash postgres-程序员宅基地

文章浏览阅读3.6k次。os: ubuntu 16.04postgresql: 9.6.8ip 规划192.168.56.102 node2 postgresqlhelp create indexpostgres=# \h create indexCommand: CREATE INDEXDescription: define a new indexSyntax:CREATE [ UNIQUE ..._load_categories_hash postgres

随便推点

FRP搭建内网穿透(亲测有效)_locyanfrp-程序员宅基地

文章浏览阅读5.7w次,点赞50次,收藏276次。FRP搭建内网穿透1.概述:frp可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;frp有服务端和客户端,服务端需要装在有公网ip的服务器上,客户端装在内网主机上。2.简单的图解:3.准备工作:1.一个域名(www.test.xyz)2.一台有公网IP的服务器(阿里云、腾讯云等都行)3.一台内网主机4.下载frp,选择适合的版本下载解压如下:我这里服务器端和客户端都放在了/usr/local/frp/目录下4.执行命令# 服务器端给执_locyanfrp

UVA 12534 - Binary Matrix 2 (网络流‘最小费用最大流’ZKW)_uva12534-程序员宅基地

文章浏览阅读687次。题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=93745#problem/A题意:给出r*c的01矩阵,可以翻转格子使得0表成1,1变成0,求出最小的步数使得每一行中1的个数相等,每一列中1的个数相等。思路:网络流。容量可以保证每一行和每一列的1的个数相等,费用可以算出最小步数。行向列建边,如果该格子是_uva12534

免费SSL证书_csdn alphassl免费申请-程序员宅基地

文章浏览阅读504次。1、Let's Encrypt 90天,支持泛域名2、Buypass:https://www.buypass.com/ssl/resources/go-ssl-technical-specification6个月,单域名3、AlwaysOnSLL:https://alwaysonssl.com/ 1年,单域名 可参考蜗牛(wn789)4、TrustAsia5、Alpha..._csdn alphassl免费申请

测试算法的性能(以选择排序为例)_算法性能测试-程序员宅基地

文章浏览阅读1.6k次。测试算法的性能 很多时候我们需要对算法的性能进行测试,最简单的方式是看算法在特定的数据集上的执行时间,简单的测试算法性能的函数实现见testSort()。【思想】:用clock_t计算某排序算法所需的时间,(endTime - startTime)/ CLOCKS_PER_SEC来表示执行了多少秒。【关于宏CLOCKS_PER_SEC】:以下摘自百度百科,“CLOCKS_PE_算法性能测试

Lane Detection_lanedetectionlite-程序员宅基地

文章浏览阅读1.2k次。fromhttps://towardsdatascience.com/finding-lane-lines-simple-pipeline-for-lane-detection-d02b62e7572bIdentifying lanes of the road is very common task that human driver performs. This is important ..._lanedetectionlite

【数据结构】静态表查找之顺序查找、二分查找、分块查找_读取表元是什么意思-程序员宅基地

文章浏览阅读4.1k次,点赞8次,收藏23次。​通过一定的方法找出与给定关键字相同的数据元素的过程叫做查找。也就是根据给定的某个值,在查找表中确定一个关键字等于给定值的记录或数据元素。_读取表元是什么意思

推荐文章

热门文章

相关标签