char* 转std::string
1.对std::string进行赋值
const char* p = "Hello world";
std::string str = p; // 可以对str直接赋值
cout << str;
//==>
// hello world
(string不一定以‘\0’结束所以如果反过来用string赋值char*往往会出错,string本质上是容器)
2.如果字符串长度未知,使用构造函数
const char *s = "Hello, World!";
std::string str(s);
3.如果字符串长度已知,则按长度构造std::string
char* data = ...;
int size = ...;
std::string myString(data, size);
4.如果string已被构造,需要更改,则使用std::string的.assign()函数
std::string myString;
char* data = ...;
int size = ...;
myString.assign(data, size);
5.std::string的.append()函数
const char* charPointer = "Hello, World!\n";
std::string strFromChar;
strFromChar.append(charPointer);
std::cout<<strFromChar<<std::endl;
std::string转char*
- .data()
using namesapce std;
string str = "hello world";
const char *p = str.data();
printf(p);
//==>
// hello world
- .c_str()
string str = "hello world";
const char *p = str.c_str();
printf(p);
//==>
// hello world
- .copy()
string str = "hello world";
char p[40];
str.copy(p, 5, 0);//这里5,代表复制几个字符,0代表复制的位置
*(p + 5) = '\0';//要手动加上结束符
printf(p);
//==>
// hello