在写C++代码时,会经常用到char[]、char*、const char*、string 相互转换,现总结如下,供大家参考。
原类型 | 目标类型 | 转换代码 |
char[] | char* | char ch[] = "test string"; char *c = ch; |
char[] | const char* | char ch[] = "test string"; const char *cc = ch; |
char[] | string | char ch[] = "test string"; std::string str = ch; |
char* | char[] | char *c = "test string"; |
char* | const char* | char* c = "test string"; const char* cc = (const char*)c |
char* | string | char* c = "test string"; std::string str = c; |
const char* | char[] | const char* cc = "test string"; char ch[1024]; strcpy(ch, cc); |
const char* | char* | const char* cc = "test string"; char* c = const_cast<char*>(cc); |
const char* | string | const char* cc = "test string"; |
string | char[] | std::string str = "test string"; char ch[1024]; strcpy(ch, str.c_str()); |
string | char* | std::string str = "test string"; char* c = str.data(); // C++17 char* c = &str[0]; // C++17 之前 |
string | const char* | std::string str = "test string"; const char* cc = str.c_str(); |
为安全起见,strcpy可改为strncpy,如string转char[]做如下转换:
std::string str = "test string";
char ch[1024];
strncpy(ch, str.c_str(), sizeof(ch));
ch[sizeof(ch) - 1] = 0;