1.string类的data/c_str/copy
1.1 std::string::data
- 原型: const char *data()const;
- 功能: string型字符串转化为char型字符串。
- 说明:将自身转化为一个以空终止符结束(即带”\0“结尾)的char型字符串。
- 返回值:一个指向字符串数组的指针,字符串数组指针。
代码示例:
(1)示例代码一: #include <iostream> #include <string> using namespace std; int main () { string str = "Test string"; char *cstr = "Test string"; if (str.length() == strlen(cstr)) { cout<<"str and cstr have the same length."<<endl; if (memcmp(cstr, str.data(), str.length()) == 0) { cout<<"str and cstr have the same content."<<endl; } } system("pause"); return 0; } =>str and cstr have the same length. str and cstr have the same content.
(2)示例代码二: #include <iostream> #include <string> using namespace std; int main () { string str("Please split this sentence into tokens"); const char *split = " "; char *cstr = new char [str.length()+1]; strcpy_s(cstr, str.size() + 1, str.data()); //cstr now contains a c-string copy of str char *p = 0; char *pNext = 0; p = strtok_s(cstr, split, &pNext); while(p != 0) { cout<<p<<endl; p = strtok_s(NULL, split, &pNext); } delete[] cstr; system("pause"); return 0; } =>Please split this sentence into tokens
1.2 std::string::c_str
- 原型:const char *c_str()const;
- 功能: string型字符串转化为char型字符串。
- 说明:将自身转化为一个以空终止符结束(即带”\0“结尾)的char型字符串。
- 返回值:一个指向字符串数组的指针,字符串数组指针。
代码示例:
(1)示例代码一: #include <iostream> #include <string> using namespace std; int main () { string str = "Test string"; char *cstr = "Test string"; if (str.length() == strlen(cstr)) { cout<<"str and cstr have the same length."<<endl; if (memcmp(cstr, str.c_str(), str.length()) == 0) { cout<<"str and cstr have the same content"<<endl; } } system("pause"); return 0; } =>str and cstr have the same length. str and cstr have the same content.
(2)示例代码二: #include <iostream> #include <string> using namespace std; int main () { string str("Please split this sentence into tokens"); const char *split = " "; char *cstr = new char [str.length()+1]; strcpy_s(cstr, str.size() + 1, str.c_str()); //cstr now contains a c-string copy of str char *p = 0; char *pNext = 0; p = strtok_s(cstr, split, &pNext); while (p != 0) { cout<<p<<endl; p = strtok_s(NULL, split, &pNext); } delete[] cstr; system("pause"); return 0; } =>Please split this sentence into tokens
1.3 std::string::copy
- 原型:size_t copy (char* s, size_t len, size_t pos = 0) const;
- 功能: string型字符串转化为char型字符串。
- 说明:从源字符串以下标为pos(默认为0)处开始拷贝n个字符到char型字符串s中。
- 返回值:实际拷贝的字符个数。
代码示例:
#pragma warning(disable:4996) //全部关掉 #include <iostream> #include <string> using namespace std; int main () { char buffer[20]; string str("Test string..."); size_t length = str.copy(buffer, 6, 5); buffer[length]='\0'; cout<<"buffer contains: "<<buffer<<endl; system("pause"); return 0; } =>buffer contains: string
参考文献:
[1] 网络资源: http://www.cplusplus.com/reference/string/string/data/
http://www.cplusplus.com/reference/string/string/c_str/
http://www.cplusplus.com/reference/string/string/copy/