《C++ Primer》学习之string
来源:互联网 发布:有名的软件供应商 编辑:程序博客网 时间:2024/06/09 20:51
以前看关于C++的书籍的时候,没有太多的去关注string的细节问题,因为平时用的基本都是关于string的都是类型之间的转换,把它当作一个字符数组来用。在C++ primer中对string进行了重点强调,仔细一点学习,有了很多新发现,这里记录一下,也许以后用到的时候会少返点错误。
初始化:string初始化的时候以前会犯这样的错误。。。就是声明了一个string 变量,然后需要它为空,就手动给其再初始化一次。其实string是个类类型,在定义的时候会调用其默认的构造函数(没有手动初始化的时候),这个构造函数会自动将此string变量初始化为空串。
string s1;
string s2(s1);
sting s3("value");
string s4(n,"c");
string s5(s3.begain(),s3.begain() + s3.size/2);
char*cp = "HiYa";
char c_array[] = "World!!!";
char no_null[] = {'H','i'};
string s6(cp);
string s7(c_array,5);
string s8(c_array+5,4);
string s9(no_null);//runtime error:no_null not null_terminated.使用这种格式的时候字,必须包含null结束字符,在字符数组中没有null这种错误是很严重的,而且无法检测
string s5(no_null,2);//指定格式,只要这个长度小于字符数组的中字符个数就行了,其只需要取到指定个数的字符即可,不需要null终止字符。
这几种方式都是可以的。
string读取:这个比较基本,只要记住读取时,忽略所有开头的空白符。再次遇到空白符的时候终止。所谓空白符包括空格,换行符,制表符
字符串和字面值的连接:s1 + "hello",前面s1为字符串, "hello"为字面值。这时候有些地方需要注意,当进行string对象和字符串面值混合连接时,+ 操作符左右两端必须有一个string类型。其中最关键的是两个字面值不能连接,然后赋值给字符串变量。下面几种情况可以清除的得出结论。
string s1("hello");
sting s2("world");
string s3 = s1 + " ," +s2 + "\n";
string s4 = s1 + ",";
string s5 = "hello" + ","; //这里是错误的,两个字面值不能连接
string s6 = s1 + "," + "world"; //这里是可以的,可以分成两部分,s1+","的到一个string temp,然后s6 = temp + "world";
string s7 = "hello" + "," + s2; //这里不行的,前两个都是字面值,不能直接连接
从string中获取字符,可以用索引值下表,跟普通的数组一样,很简单,只有一点要注意一下,在使用索引值的时候,最好用size_type,其为unsigned类型。这样就不用考虑其下标小于0的情况来了,防止出错。
string中一些字符的处理,string中封装了很多对于字符的操作函数,比如判断字符的类型,字母还是整形,标点,空白符等,这些可能比较常用,很多时候会避免自己去写一些比较搓的算法去判断。呵呵,yy。
温馨小tip:C标准库头文件命名形式name.h ,在C++中使用的cname。前面加C表示此标准库源于c标准库。
- c++primer之string
- 《C++ Primer》学习之string
- c++ primer笔记之string
- C++ primer 学习笔记之 String
- c++primer学习之路(4)——string和vector
- C++primer 3 string
- c++primer:string.size()
- C++primer:string流
- C++primer 第三章学习笔记(string篇)
- 学习C++primer心得08.5.31--有关string类
- c++primer学习笔记(3.2)标准库string类型
- C++Primer学习札记_标准库String类
- C++primer学习:string的操作习题(1):
- C++primer学习:string类的练习(2)
- C++primer学习:string类操作练习(3)
- C Primer Plus学习 二十七 string.h strcat()函数
- C Primer Plus学习 二十八 string.h strlen ()函数
- C Primer Plus学习 二十九 string.h strncat()函数
- Hdu 1695 GCD (数论 容斥原理)
- i++ ++i 的笔试题
- 关于epoll中event.data联合体的疑问解决方法
- 一个能够完成购买商品功能的简单程序的流程
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- 《C++ Primer》学习之string
- 20140330 这几天想做一个安卓的游戏,我还起名字叫"再战" step_1
- 配置项目时该引用的jar
- 概率论与数理统计常见名词
- OpenERP Web开发
- html页面加载顺序
- 【JAVA学习】空指针异常java.lang.NullPointerException
- Linux Socket Programming by Example-第六章 基于无连接的UDP通信
- test