C++输入一行字符串的一点小结


原文链接:

http://www.wutianqi.com/?p=1181


大家在学习C++编程时。一般在输入方面都是使用的cin.

而cin是使用空白(空格,制表符和换行符)来定字符串的界的。

这就导致了对于带有空格的字符串。比方”I Love C++奋斗乐园论坛”

仅仅能读入”I”,后面的都无法读入。

这时怎么办?

 一.对于字符数组

方法一:getline()

读入整行数据,它使用回车键输入的换行符来确定输入结尾。

调用方法: cin.getline(str, len);

第一个參数str是用来存储输入行的数组名称。第二个參数len是要读取的字符数。

 1 #include <iostream>

 2 using namespace std;

 3  

 4 int main()

 5 {

];

);

 8     cout << str << endl;

;

 }

方法二:get()

调用方法:cin.get(str, len);

 1 #include <iostream>

 2 using namespace std;

 3  

 4 int main()

 5 {

];

);

 8     cout << str << endl;

;

 }

那么两者有何差别?

两者都读取一行输入。直至换行符。

然后,getline将丢弃换行符。而get()将换行符保留在输入序列里

所以,再使用cin.get()输入多行数据时,中间能够使用get()消除换行符。

 1 #include <iostream>

 2 using namespace std;

 3  

 4 int main()

 5 {

], str2[];

);

 8     cin.get();

);

     cout << "str1: " << str1 << endl;

     cout << "str2: " << str2 << endl;

     ;

 }

由于get(str, len)和get()都是cin的类成员。所以能够合并起来写:

 1 #include <iostream>

 2 using namespace std;

 3  

 4 int main()

 5 {

], str2[];

).get();   // 注意这里!

);

 9     cout << "str1: " << str1 << endl;

     cout << "str2: " << str2 << endl;

     ;

 }

(欢迎大家去我论坛学习:C++奋斗乐园: www.cppleyuan (dot) com)

二.对于string类

方法一:getline(cin, str)

这说明这里的getline不是类方法。

 1 #include <iostream>

 2 #include <string>

 3 using namespace std;

 4  

 5 int main()

 6 {

 7     string str;

 8     getline(cin, str);

 9     cout << str << endl;

     ;

 }

C++输入一行字符串的一点小结的更多相关文章

  1. 转:C++输入一行字符串的一点小结

    原文链接: http://www.wutianqi.com/?p=1181 大家在学习C++编程时,一般在输入方面都是使用的cin.而cin是使用空白(空格,制表符和换行符)来定字符串的界的.这就导致 ...

  2. 使用getline输入一行字符串

    给定10个国家名,按字母顺序输出,国家名中可以包含空格,国家名用换行隔开 #include<algorithm> #include<iostream> #include< ...

  3. c++ 输入一行字符串

    ]; //cin>>str1; 方式1 不能统计(录入)空格后的字符 cin.); //方式2 能统计空格后输入的字符 按回车键输入结束 get()会将换行符保存在序列里 //gets(s ...

  4. 【Python】利用递归函数调用方式,将所输入的字符串,以相反的顺序显示出来

    源代码: """ 利用递归函数调用方式,将所输入的字符串,以相反的顺序显示出来 string_reverse_output():反向输出字符串的自定义函数 pending ...

  5. python输入一行字符,判断不同字符数量

    输入一行字符,判断不同字符的数量, 分别用for循环和while循环完成 for循环 运用了字符串方法, isupper()判断是否为大写字母 islower()判断是否为小写字母 isdigit() ...

  6. 汇编语言从键盘输入一个字符串(串长不大于80)以十进制输出字符串中非字母字符的个数(不是a to z或 A to Z)

    (1)从键盘输入一个字符串(串长不大于80). (2)以十进制输出字符串中非字母字符的个数(不是a to z或 A to Z). (3)输出原字符串且令非字母字符闪烁显示. (4)找出字符串中ASCI ...

  7. python基础练习题(题目 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数)

    day10 --------------------------------------------------------------- 实例017:字符串构成 题目 输入一行字符,分别统计出其中英 ...

  8. string.Format出现异常"输入的字符串格式有误"的解决方法

    string.Format出现异常"输入的字符串格式有误"的解决方法 今天在做项目时,碰到一个很奇怪的问题,我使用string.Format居然报“输入的字符串格式有误”的错误,我 ...

  9. 20150912华为机考1之"输入一个字符串,将其中出现次数最多的字符输出"

    不吐槽华为的服务器了,直接上正文 输入:字符串(英文字母),长度不超过128 输出:出现频率最高的字母 思路写在注释文档 /* Input a string * Output the most fre ...

随机推荐

  1. LibreOJ2045 - 「CQOI2016」密钥破解

    Portal Description 给出三个正整数\(e,N,c(\leq2^{62})\).已知\(N\)能表示成\(p\cdot q\)的形式,其中\(p,q\)为质数.计算\(r=(p-1)( ...

  2. struts2的一些功能

    一.interceptor拦截器 1.自定义拦截器 public class Cus_Emp_Interceptor implements Interceptor { public String in ...

  3. 推荐个PMP的内容,广州有需要的朋友可以参考看看

    慧翔天地PMP®培训机构简介 广州慧翔企业管理咨询有限公司注册于2012年8月14日,注册资金200万元人民币.实际上从2011年就已经开始从事PMP推广及教学工作(2010年曾代理智鼎东方华南市场, ...

  4. 去掉 NavigationBar 底部的那条黑线

    //加入下面两行代码即可[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UI ...

  5. ML | SVM

    What's xxx An SVM model is a representation of the examples as points in space, mapped so that the e ...

  6. hdu6217(数学)

    题意: 你需要输出在16进制下,π的第n位的数字 分析: 既然要求第n位的数字,我们不妨把原来的数字乘上$16^{n-1}$,我们要求的就是这个和式的小数部分的最高位 我们可以用double暴力求出小 ...

  7. 公共返回JSON信息的方法

    java代码: public void returnMessage(HttpServletResponse response, Object str){ PrintWriter write = nul ...

  8. AngularJS中使用Directive、Controller、Service

    AngularJS是一款非常强大的前端MVC框架.同时,它也引入了相当多的概念,这些概念我们可能不是太熟悉. (1)Directive 指令 (2)Controller 控制器 (3)Service ...

  9. linux mysql添加用户名并实现远程访问

    第一步:登陆linux,在终端登陆mysql #mysql -u root -p 第二步:查询系统用户列表并进行添加用户 mysql>select host,user,password from ...

  10. docker run 报错——WARNING: IPv4 forwarding is disabled. Networking will not work.

    执行  docker run  时遇到如下WARNING: [root@etcd1 volumes]# docker run -d -p 8080:80 -v /tmp/test_mount http ...