c++字符串处理

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*

  1. .data()
using namesapce std;
string str = "hello world";
const char *p = str.data();
printf(p);
//==>
//  hello world
  1. .c_str()
string str = "hello world";
const char *p = str.c_str();
printf(p);
//==>
//  hello world
  1. .copy()
string str = "hello world";
char p[40];
str.copy(p, 5, 0);//这里5,代表复制几个字符,0代表复制的位置  
*(p + 5) = '\0';//要手动加上结束符
printf(p);
//==>
//  hello
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值