记录:C++ string转char *

需要将string转char*需要c_str()函数。
c_str()函数返回一个指向正规C字符串的指针,内容与本string串相同.
这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式.

string log_path= ”zby.txt“
char path[128] = {0};
strcpy(path, log_path.c_str());

char*向string转换支持隐式类型转换,即:

char* c[ ] =  {1,2,3};
string p = c ;

注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针
#########################################
最好不要这样使用:

char* c;
string s="aaaaa";
c = s.c_str();

因为c最后指向的内容是垃圾,因为s对象被析构,其内容被处理。

END.

要将std::string换为char*,有三种方法可以使用。第一种方法是使用c_str()函数,该函数返回一个指向字符串的const char*指针,可以通过强制类型换将其换为char*。例如: std::string str = "Hello world"; const char* cstr = str.c_str(); char* charPtr = const_cast<char*>(cstr); 第二种方法是使用data()函数,该函数返回一个指向字符串的const char*指针,同样可以通过强制类型换将其换为char*。例如: std::string str = "Hello world"; const char* data = str.data(); char* charPtr = const_cast<char*>(data); 第三种方法是使用copy()函数,该函数可以将std::string中的字符复制到一个char*缓冲区中。需要注意的是,在使用该函数之前,需要确保目标缓冲区足够大以容纳字符串和终止符。例如: std::string str = "Hello world"; char charArr[12]; str.copy(charArr, str.size() + 1); charArr[str.size()] = '\0'; <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [std::stringchar* 之间的换](https://blog.csdn.net/u014801811/article/details/80113382)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [C++ 模板写的短小字符串类,用于替换字符数组和std::string](https://download.csdn.net/download/foxtj35/12240064)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值