stringconst char* char* char[] 四者类型经常会需要转化
一: 转化总结形式如下:
使用时, 要对源格式和目标格式进行初始化源格式赋值为具体的内容, 目标格式赋值为空
源格式 & nbsp; 目标格式 | string | const char* | char* | char[] |
string | NULL | const char*=string.c_str(); | const char*=string.c_str(); char*=<const_cast><char*>(const char*); | for(int i=0;i< string.length();i++) { char[i]=string[];} |
const char* | string =const char*; | NULL | char*=<const_cast><char*>(const char*); | strncpy_s(char,const char*,n); |
char* | string =char*; | const char*= char*; | NULL | strncpy_s(char,char*,n); |
char[] | string =char; | const char*=char; | char*=char; | NULL |
二总结方法:
1 变成 string, 直接赋值
2 char[] 变成别的, 直接赋值
3 char * 变 constchar * 容易, const char * 变 char * 麻烦 < const_cast><char*>(constchar*);
4 string 变 char * 要通过 const char * 中转
5 变成 char[]string 逐个赋值, char* const char* strncpy_s()
三代码实现 (方便初学者, 贴的很详细了解了以上一二点, 可跳过代码)
1string 转为其他类型
string 转 const char*
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- std::string str = "HelloWorld!"; // 初始化 string 类型, 并具体赋值
- const char* constc = nullptr; // 初始化 const char * 类型, 并赋值为空
- constc= str.c_str(); //string 类型转 const char * 类型
- printf_s("%s\n", str.c_str()); // 打印 string 类型数据 .c_str()
- printf_s("%s\n", constc); // 打印 const char * 类型数据
- return 0;
- }
string 转 char*
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- std::string str = "HelloWorld!"; // 初始化 string 类型, 并具体赋值
- char* c = nullptr; // 初始化 char * 类型, 并赋值为空
- const char* constc = nullptr; // 初始化 const char * 类型, 并赋值为空
- constc= str.c_str(); //string 类型转 const char * 类型
- c= const_cast<char*>(constc); //const char * 类型转 char * 类型
- printf_s("%s\n", str.c_str()); // 打印 string 类型数据 .c_str()
- printf_s("%s\n",c); // 打印 char * 类型数据
- return 0;
- }
string 转 char[]
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- std::string str = "HelloWorld!"; // 初始化 string 类型, 并具体赋值
- char arrc[20] = {0}; // 初始化 char[] 类型, 并赋值为空
- for (int i = 0; i <str.length(); i++) //string 类型转 char[] 类型
- {
- arrc[i]=str[i];
- }
- printf_s("%s\n", str.c_str()); // 打印 string 类型数据 .c_str()
- printf_s("%s\n", arrc); // 打印 char[] 类型数据
- return 0;
- }
2const char * 转为其他类型
const char * 转 string
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- const char* constc = "Hello World!"; // 初始化 const char* 类型, 并具体赋值
- std::string str; // 初始化 string 类型
- str= constc; //const char * 类型转 string 类型
- printf_s("%s\n", constc); // 打印 const char* 类型数据
- printf_s("%s\n", str.c_str()); // 打印 string 类型数据
- return 0;
- }
const char * 转 char*
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- const char* constc = "Hello World!"; // 初始化 const char* 类型, 并具体赋值
- char* c = nullptr; // 初始化 char * 类型
- c= const_cast<char*>(constc); //const char * 类型转 char * 类型
- printf_s("%s\n", constc); // 打印 const char* 类型数据
- printf_s("%s\n", c); // 打印 char * 类型数据
- return 0;
- }
const char * 转 char[]
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- const char* constc = "Hello World!"; // 初始化 const char* 类型, 并具体赋值
- char arrc[20] = { 0 }; // 初始化 char[] 类型, 并赋值为空
- strncpy_s(arrc,constc,20); //const char * 类型转 char[] 类型
- printf_s("%s\n", constc); // 打印 const char* 类型数据
- printf_s("%s\n", arrc); // 打印 char[] 类型数据
- return 0;
- }
3char * 转为其他类型
char * 转 string
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- char* c = "HelloWorld!"; // 初始化 char* 类型, 并具体赋值
- std::string str; // 初始化 string 类型
- str= c; //char * 类型转 string 类型
- printf_s("%s\n", c); // 打印 char* 类型数据
- printf_s("%s\n", str.c_str()); // 打印 string 类型数据
- return 0;
- }
char * 转 const char*
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- char* c = "HelloWorld!"; // 初始化 char* 类型, 并具体赋值
- const char* constc = nullptr; // 初始化 const char* 类型, 并具体赋值
- constc= c; //char * 类型转 const char* 类型
- printf_s("%s\n", c); // 打印 char* 类型数据
- printf_s("%s\n", constc); // 打印 const char* 类型数据
- return 0;
- }
char * 转 char[]
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- char* c = "HelloWorld!"; // 初始化 char* 类型, 并具体赋值
- char arrc[20] = { 0 }; // 初始化 char[] 类型, 并具体赋值
- strncpy_s(arrc,c,20); //char * 类型转 char[] 类型
- printf_s("%s\n", c); // 打印 char* 类型数据
- printf_s("%s\n", arrc); // 打印 char[] 类型数据
- return 0;
- }
4char[] 转为其他类型
- #include "stdafx.h"
- #include <iostream>
- int _tmain(intargc, _TCHAR* argv[])
- {
- char arrc[20] = "HelloWorld!"; // 初始化 char[] 类型, 并具体赋值
- std::string str; // 初始化 string
- const char* constc = nullptr; // 初始化 const char*
- char*c = nullptr; // 初始化 char*
- str= arrc; //char[] 类型转 string 类型
- constc= arrc; //char[] 类型转 const char* 类型
- c= arrc; //char[] 类型转 char * 类型
- printf_s("%s\n", arrc); // 打印 char[] 类型数据
- printf_s("%s\n", str.c_str()); // 打印 string 类型数据
- printf_s("%s\n", constc); // 打印 const char* 类型数据
- printf_s("%s\n", c); // 打印 char * 类型数据
- return 0;
- }
转载
来源: http://www.bubuko.com/infodetail-2544762.html