标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p, n)。 1. c_str():生成一个const char*指针,指向以空字符终止的数组。 注: ①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复...
char*c;strings="1234";c=s.c_str(); 上述代码中,c最后指向的内容是垃圾,因为s对象被析构,其内容被处理,同时编译器将会报错。正确代码如下: char*cstr,*p;stringstr("Please split this phrase into tokens");cstr=newchar[str.size()+1];strcpy(cstr,str.c_str()); 如果一个函数要求char*参数,可以...
标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。 1. c_str():生成一个const char*指针,指向以空字符终止的数组。 注: ①这个数组的数据是临时的,当有一个改变这些数据的成员函数被调用后,其中的数据就会失效。因此要么现用先转换,要么把它的数据复制...
c_str() 以const char* 类型返回 string 内含的字符串 如果一个函数要求char*参数,可以使用c_str()方法: string s = "Hello World!"; printf("%s", s.c_str()); //输出 "Hello World!" ——— c_str在打开文件时的用处: 当需要打开一个由用户自己输入文件名的文件时,可以这样写:ifstream in(st....
string的函数c_str()是获取这个字符串的首指针,例如: string str = "1234";那么 char* pStr = str.c_str(); 中 pStr就是指向"1234"字串的首地址 '1' 。 1. 2. 那么知道: atoi 函数是把字符串的数字转为数字型的数值, 例如:int n = atoi("1234");那么结果是n的数值就为1234。
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 比如:最好不要这样: char* c; string s="1234"; c = s.c_str(); //c最后指向的内容是垃圾,因为s对象被析...
const char *c_str();c_str()函数返回⼀个指向正规C字符串的指针常量, 内容与本string串相同.这是为了与c语⾔兼容,在c语⾔中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:⼀定要使⽤strcpy()函数等来操作⽅法c_str()返回的指针 ⽐如...
深入探讨C++中std::string类的成员函数c_str()和data()的区别,需要从历史角度出发。在过去,string类设计时并不强制内部存储以'\0'结尾的字符串,这与现代语言的设计趋势相悖。为此,在C++11标准发布之前,仅通过调用string::c_str()函数才能获取到以'\0'结尾的字符串。然而,C++11标准进行了改进...
1. c_str():⽣成⼀个const char*指针,指向以空字符终⽌的数组。注:①这个数组的数据是临时的,当有⼀个改变这些数据的成员函数被调⽤后,其中的数据就会失效。因此要么现⽤先转换,要么把它的数据复制到⽤户⾃⼰可以管理的内存中。注意。看下例:const char* c;string s="1234";c = s...