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(学习中)的更多相关文章

  1. C标准库string.h中几个常用函数的使用详解

    strlen 计算字符串长度 size_t strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符. 函数实现: int Strlen(cons ...

  2. 把《c++ primer》读薄(3-1 标准库string类型初探)

    督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1:养成一个好习惯,在头文件中只定义确实需要的东西 using namespace std; //建议需要什么再using声 ...

  3. C++ 标准库类型-String,Vector and Bitset

    <C++ Primer 4th>读书摘要 最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合.这些标准库类型是语言组成部分中更基本的那些数据类型(如 ...

  4. 【C++ Primer每日刷】之三 标准库 string 类型

    标准库 string 类型 string 类型支持长度可变的字符串.C++ 标准库将负责管理与存储字符相关的内存,以及提供各种实用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与 ...

  5. C++标准库string类型

    string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string类型的目的就是满足对字符串的一般应用. 本文地址:http://www.cn ...

  6. C++ Primer 第三章 标准库类型string运算

    1. 标准库类型 string string表示可变长的字符序列,使用string必须首先包含string头文件.如何初始化类的对象是由类本身决定的. int n; string s1;//默认初始化 ...

  7. day2_python学习笔记_chapter4_标准类型和内建函数

    1. 标准类型 Integer,Boolean, Long integer, Floating point real number, Complex number, String, List, Tup ...

  8. C++标准库string类型的使用和操作总结

    string是C++标准库最重要的类型之一,string支持长度可变的字符串,其包含在string头文件中.本文摘自<C++PRIMER 第四版·特别版>和个人的一些总结. 一.声明和初始 ...

  9. 标准库类型string

    定义和初始化string对象 初始化string对象方式: string s1;//默认初始化,s1是一个字符串 string s2(s1);//s2是s1的副本 string s2 = s1;//等 ...

随机推荐

  1. 关于Eclipse的unsupported major minor version 51.0 错误

    把别人的工程 拿来运行报上述错误 是因为工程版本不对 解决办法:新建工程 把现有的代码或资源文件  拷到新建工程里

  2. SLF4简介

    The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logg ...

  3. FAQ: C++中定义类的对象:用new和不用new有何区别?

    C++用new创建对象和不用new创建对象的区别解析 作者: 字体:[增加 减小] 类型:转载 时间:2013-07-26 我要评论 在C++用new创建对象和不用new创建对象是有区别的,不知你是否 ...

  4. csuoj 1334: 好老师

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1334 1334: 好老师 Time Limit: 1 Sec  Memory Limit: 128 ...

  5. 自己使用Fresco时遇到的相关问题

    Fresco是facebook推出的一款强大的android图片处理库,github地址:https://github.com/facebook/fresco 里面有官方的使用配置文档,而且是中文的. ...

  6. HDU 5000 Clone(离散数学+DP)(2014 ACM/ICPC Asia Regional Anshan Online)

    Problem Description After eating food from Chernobyl, DRD got a super power: he could clone himself ...

  7. struts文件上传(多文件)

    第01步:配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...

  8. Verilog中的specify block和timing check

    在ASIC设计中,有两种HDL construct来描述delay信息: 1)Distributed delays:通过specify event经过gates和nets的time,来描述delay; ...

  9. CCS3属性之text-overflow:ellipsis;的用法和注意之处

    语法: text-overflow:clip | ellipsis 默认值:clip 适用于:所有元素 clip: 当对象内文本溢出时不显示省略标记(...),而是将溢出的部分裁切掉. ellipsi ...

  10. Silverlight ModelView中调用UI进程

    Silverlihgt:  Deployment.Current.Dispatcher.BeginInvoke wpf: App.Current.Dispatcher.Invoke