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. win install pip

    在windows下,我们使用python时,常常因为找不到需要的pthon模块,导致一些脚本不能正常执行,这时候可以安装pip工具,使用它来管理安装python所需要的模块: pip install ...

  2. APUE 学习笔记(七) 信号

    1.信号是软件中断,提供一种异步处理事件的方法 很多事件产生信号: (1)用户按下某些中断键,如 Ctrl + C键产生 SIGINT信号 (2)硬件异常产生信号,比如 除数为0,无效的内存引用  ( ...

  3. mysql利用sql脚本插入数据中文乱码

    将其中的 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SE ...

  4. java通过代码控制线程状态,解决线程不安全的问题。

    写两个类,Input,output 两个都是使用同步代码块的方式实现线程间的同步 input类,是为变量赋值 output类,是打印变量 由于线程争夺cpu造成数据的不匹配 通过,设立一个 flag ...

  5. AC日记——[福利]可持久化线段树 cogs 2554

    2554. [福利]可持久化线段树 ★★☆   输入文件:longterm_segtree.in   输出文件:longterm_segtree.out   简单对比时间限制:3 s   内存限制:2 ...

  6. Springboot构建问题集

    最近在搭建框架时遇到很多细节问题,时间久了就很容易忘记,在此记录一下. 1.问题:Warning:java: 来自注释处理程序 'org.antlr.v4.runtime.misc.NullUsage ...

  7. 搭建高可用服务注册中心-Spring Cloud学习第一天(非原创)

    文章大纲 一.Spring Cloud基础知识介绍二.创建单一的服务注册中心三.创建一个服务提供者四.搭建高可用服务注册中心五.项目源码与参考资料下载六.参考文章   一.Spring Cloud基础 ...

  8. ConcurrentHashMap如何保证线程安全

    以前看过HashMap的内部实现,知道HashMap是使用Node数组+链表+红黑树的数据结构来实现,如下图所示.但是HashMap是非线程安全,在多线程环境不能够使用. 不过JDK在其并发包中为我们 ...

  9. TF-IDF学习笔记

    计算文本的权重向量,有个很有效的权重方案:TF-IDF权重策略.TF-IDF含义是词频逆文档频率,指的是,如果某个词或短语在一篇文章中出现的频率高,并且在其他文章中很少出现,则认为此词或短语具有很好的 ...

  10. 《SQL Server 监控和诊断》

    http://jimshu.blog.51cto.com/ http://www.mssqlmct.cn/