标准类型String(学习中)
1、读取string对象
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<s;
return ;
}
这段代码首先定义了一个名为s 的空string,然后将标准输入的内容读取到s中。在执行读取操作时,string对象自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇到下一次空白为止。
如上所述,如果程序的输入时“ hello world!! ”(注意开头和结尾处的空格),输出将是“hello”,输出结果中没有任何空格。
2、和内置类型的输入输出一样,string对象的此类操作也是返回运算符左侧的运算对象作为其结果。因此,多个输入或者多个输出可以连着写在一起:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s1,s2;
cin>>s1>>s2;
cout<<s1<<s2;
return ;
}
假如上面的程序输入与之前的一样的内容,“ hello world!! ”,输出将是“helloworld!!”
3、getline读取一整行
如果使用这样的程序
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s1;
while(cin>>s1)
cout<<s1;
cout<<endl;
return ;
}
(上面是我的输入和输出)
有事我们希望能在最终得到的字符串中保留输入时的空白符,这时应该用getline函数代替之前的>>运算符。getline函数的参数是一个输入流和一个string对象。函数从给定的输入流中读取内容,直到遇到换行符为止。(触发getline函数返回的那个换行符实际上被丢弃啦,得到的string对象中并不包含换行符)
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s1;
while(getline(cin,s1))
cout<<s1;
cout<<endl;
return ;
}

4、string::size_type类型
对于size函数来说,返回一个int或者所述的那样返回一个unsigned似乎都是合理的。但是size函数返回的是一个string::size_type类型的值,下面就对这种新类型稍作解释。
string 类及其他大多标准库函数都定义了几种配套的类型,这些配套类型体现在标准类型与机器无关的特性,类型size_type即是其中的一种。
由于size函数返回的是一个无符号整型数,因此切忌,如果在表达式中混用了带符号的数和无符号数可能产生意想不到的结果。
Tip:如果表达式中已经有了size()函数就不要在使用int了,这样可以避免混用int和unsigned可能带来的问题。
5、比较string对象
string类定义了几种用于比较字符串的运算符。这些比较运算符注意比较string对象中的字符,并且对大小写敏感。
上述这些运算符都按照字典顺序:
- 如果两个string对象的长度不同,而且较短的string对象的每个字符都与较长string对象对应位置上的字符相同,就说较短string对象小于较长string对象。
- 如果两个string对象在某些对应的位置上不一致,则string对象比较的结果是string对象中第一对相异字符比较的结果。
6、字面值和string对象相加
当把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算符对象至少有一个时string
string s='hello'+'world';//错误:两个运算对象都不是string
string s1=s+','+'xiao';//合法 相当于 string s1=(s+',')+'xiao';因为其中s+','的结果是一个string对象。
string s2='hello'+','+s;//不合法
Warning:C++语言中的字符串字面值并不是标准库类型string的对象。切记,字符串字面值与string是不同类型。(字符串字面值的类型是const char[N],而string是标准库类型)
标准类型String(学习中)的更多相关文章
- C标准库string.h中几个常用函数的使用详解
strlen 计算字符串长度 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符. 函数实现: int Strlen(cons ...
- 把《c++ primer》读薄(3-1 标准库string类型初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...
- C++ 标准库类型-String,Vector and Bitset
<C++ Primer 4th>读书摘要 最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合.这些标准库类型是语言组成部分中更基本的那些数据类型(如 ...
- 【C++ Primer每日刷】之三 标准库 string 类型
标准库 string 类型 string 类型支持长度可变的字符串.C++ 标准库将负责管理与存储字符相关的内存,以及提供各种实用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与 ...
- C++标准库string类型
string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string类型的目的就是满足对字符串的一般应用. 本文地址:http://www.cn ...
- C++ Primer 第三章 标准库类型string运算
1. 标准库类型 string string表示可变长的字符序列,使用string必须首先包含string头文件.如何初始化类的对象是由类本身决定的. int n; string s1;//默认初始化 ...
- day2_python学习笔记_chapter4_标准类型和内建函数
1. 标准类型 Integer,Boolean, Long integer, Floating point real number, Complex number, String, List, Tup ...
- C++标准库string类型的使用和操作总结
string是C++标准库最重要的类型之一,string支持长度可变的字符串,其包含在string头文件中.本文摘自<C++PRIMER 第四版·特别版>和个人的一些总结. 一.声明和初始 ...
- 标准库类型string
定义和初始化string对象 初始化string对象方式: string s1;//默认初始化,s1是一个字符串 string s2(s1);//s2是s1的副本 string s2 = s1;//等 ...
随机推荐
- Can't add self as subview的困惑
2016-05-27 09:40:43.4043 UMLOG: event: session_id=B63F36D84AD478B9F95C7D0F05DD819B, event=user_choos ...
- javascript 正则表达式基础知识汇总
正则表达式:对字符串中的信息实现查找.替换和提取操作.(不支持注释和空白,必须写在一行内)正则表达式的创建:包含在一对斜杠之间的字符(直接量语法)例如:var pattern = /s$/; ...
- mysql explain输出中type的取值说明
原文: http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 这列很重要,显示了连接使用了哪种连接类别,有无使用索引. 从最好 ...
- 使用Genymotion来运行Android Studio开发的程序
访问网址:https://www.genymotion.com,注册账户,之后下载,下载时需要注意不要选择(withou virtualbox那个) 之后运行安装, 运行Genymotion运行启动G ...
- Java类加载器深入探索
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 什么是.class文件? class文件全名称为Java class文件,主要在平台无关性和网 ...
- linux_x86_64 blat安装
blatSrc35.zip下载地址:http://users.soe.ucsc.edu/~kent/src/ 对于下载好的源代码安装包blatSrc35.zip,需进行编译,安装过程如下: 1.用un ...
- 数组 splice 方法
splice 是万能的吗? 不知道,至少他有三种功能 splice的三种功能,减去,增加,替换 第一种减去 var s=[1,2,3,4,5,6]; s.splice(2,2); console.lo ...
- html a标签链接使用action 参数传递中文乱码
<a href="queryByType?ptype=鼠标"> 在后台变量ptype接收的值为乱码 解决方法: 在tomcat的server.xml文件中添加 URIE ...
- asp,asp.net 以表格输出excel,数据默认科学计数的解决办法
关键字: style="vnd.ms-excel.numberformat:@" 问题:在用table仿excel生成中经常遇到类似于身份证的长整数类型excel默认当成科学计数 ...
- Android中实现进入App之后检查网络状态
1,注册广播,一般使用静动态注册,即当程序退出的时候广播接受者就收不到消息使用方法context.registerReceiver()方法在MainActivity中的OnStart()方法中执行注册 ...