string对象、C风格字符串、数值之间的转换
混用string对象和C风格字符串
- 允许使用字符串字面值来初始化string对象:string s("i am a student");但是反过来不成立,如果程序的某处需要一个C风格字符串,无法直接用string对象直接来代替,也不能直接用string对象初始化指向字符的指针。为了完成该功能,string专门提供了一个成员函数c_str():const char* str = s.c_str();顾名思义,c_str()函数的返回值是一个C风格的字符串。也就是说,函数的返回结果是一个指针,该指针指向一个以空字符结束的字符数组,而这个数组所存的数据恰好与那个string对象的一样。结果指针的类型是const char*,从而确保我们不会改变字符数组的内容。
string和数值之间的转换
- to_string(val):一组重载函数,返回数值val的string表示。val可以是任何算术类型。
- stoi(s,p,b):返回s的起始子串(表示整数内容)的数值,返回值类型是int。b表示转换所用的基数,默认值为10。p是size_t指针,用来保存s中第一个非数值字符的下标,p默认为0,即,函数不保存下标。
- stod(s,p):返回s的起始子串(表示浮点数内容)的数值,返回值类型分别是double。参数p的作用与整数转换函数中一样。
- 对“起始子串”的解释:string 参数中第一个非空白符必须是符号(+或-)或数字。它可以以0x或0X开头来表示十六进制数。对那些将字符串转换为浮点值的函数,string参数也可以以小数点(.)开头,并可以包含e或E来表示指数部分。对于那些将字符串转换为整型值的函数,根据基数不同,string参数可以包含字母字符,对应大于数字9的数。而起始子串之后无法转换为数值的部分会被忽略。