标准类型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;//等 ...
随机推荐
- iOS 快递查询
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- iOS添加自动更新的代码
- (void)versionUpdate{ //获得当前发布的版本 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_ ...
- Java常用锁机制简介
在开发Java多线程应用程序中,各个线程之间由于要共享资源,必须用到锁机制.Java提供了多种多线程锁机制的实现方式,常见的有synchronized.ReentrantLock.Semaphore. ...
- HTML-移动端如何使用css让百分比布局的弹窗水平和垂直方向上居中
pc端让一个弹窗水平和垂直方向居中,在知道弹窗宽高的情况下很好计算,只需要用如下css即可: #date{ width: 300px; height: 300px; position: absolut ...
- Megacli查看raid磁盘信息
准备: 新版本的 MegaCli-1.01.24-0.i386.rpm (下载地址:http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Fi ...
- ORA-15260: permission denied on ASM disk group
向ASM磁盘组添加新的磁盘的时候,报了以下错误: $ sqlplus '/as sysdba' SQL*Plus: Release 11.2.0.4.0 Production on Sat Dec 2 ...
- Web 安全的短板
- NSCoding归档
大家都知道ios中数据持久化的方式有plist sqlite coredata nscoding 而nscoding不需要关心模型属性有多少个,是什么类型,不需要定义归档文件的规则. 下面给个类大家用 ...
- 每天一个java基础知识--static
内存总体一共分为了 4个部分(stack segment.heap segment.code segment.data segment) 当我们在程序中,申明一个局部变量的时候,此变量就存放在了 st ...
- 判断java中两个对象是否相等
java中的基本数据类型判断是否相等,直接使用"=="就行了,相等返回true,否则,返回false. 但是java中的引用类型的对象比较变态,假设有两个引用对象obj1,obj2 ...