c++为什么在C语言字符串的基础上还要创建string类???
C风格字符串是以‘\0’ 结束。
例如:char myString[ ] = "hello";
myString : 
strlen()函数不包含结尾符 ‘\0’。
sizeof()关键字包含 结尾符 ‘\0’。
strlen()针对的是字符指针。
sizeof()针对的是字符数组。
例如:
char *str = "abcdef";
strlen(str); // 输出结果为6
siezeof(str); // 输出的是4。str此时就是一个指针。
///
char str[ ] = "abcdef";
strlen(str); // 输出结果为6
siezeof(str); // 输出的是7。
c语言字符串,由于有了这个结束符的存在使得容易产生越界等问题。
c++为了解决这个问题,于是便设计了string类。
字符串字面值
字面值,存储在只读内存中。
string转C语言字符串
string类的c_str()方法。返回的是const char *。
string类的data()方法,c++14之前返回值是consr char *, c++17之后,按需返回。可返回char * 或const char *。
高级数值转换
string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);
int stoi(const strig& str, size_t *idx = 0, int bace = 10);
long stol(const strig& str, size_t *idx = 0, int bace = 10);
unsigned long stoul(const strig& str, size_t *idx = 0, int bace = 10);
float stof(const strig& str, size_t *idx = 0, int bace = 10);
dpuble stod(const strig& str, size_t *idx = 0, int bace = 10);
// 例子
const string toParse = " 123USD";
size_t index = 0;
int val = stoi(toParse, &index);
cout << "val = " << val;
cout << "toParse[index]" << toParse[index];