c++ primer plus阅读笔记1---cin换行符等问题

来源:互联网 发布:软件行业税收优惠政策 编辑:程序博客网 时间:2024/06/14 22:47

1.关于cin

cin 使用空白(空格,制表符和换行符)来确定字符串结束的位置,这意味着cin在获取字符串数组输入时只读取一个单词。读取单词后,cin将该字符串放到数组中,并自动在结尾添加空字符。

2.面向行的输入:getline()和get()

getline()读取整行,它使用通过回车键输入的换行符来确定输入结尾。

getline(name,20) 读取20个字符到name数组中,不保存换行符

cin.getline(name,size) 返回一个cin对象,黑可以这样用:

cin.getline(name1,size).getline(name2,size);


get()读取整行,但是不会丢弃换行符,而是将换行符留在输入队列中例如

cin.get(name,size);//换行符保存在输入队列中cin.get(name,size);//读取的是换行符 cin.get(name,size);//读取第一行cin.get();         //读取换行符cin.get(dessert,size);//读取第二行

3.clear

当get()读取空行以后,将会设置一个失效位,这意味着接下来的输入将会被阻断,但是可以使用cin.clear()来恢复。

当输入的字符串比分配的空间长,则getline()和get()将会把余下的字符留在输入队列中,getline()还会设置失效位,并关闭后边的输入


4.原始字符串:

原始字符串使用"()"做界定符,并且使用前缀R来标识原始字符串

cout<<R"(this is raw string \n)"<<"\n"<<endl;等价于:
cout<<"this is raw string \\n"<<"\n"<<endl;

输出为:
this is raw string \n

使用原始字符串时,按回车不仅会移动到下一行,还会在原始字符串中添加回车字符

如果在原始字符串中包含)",则编译器见到第一个)"将会认为到此结束,正确的做法是:

cout<<R"+*(  "(who wouldn't?)",she whispered.  )+*"<<endl;
这里使用了自定义界定符 +*  既在字符串开头的" (之间添加 +*界定符,同样在末尾也要添加




 
原创粉丝点击