std :: string to char *

本文翻译自:std::string to char*

I want to convert a std::string into a char* or char[] data type. 我想将std :: string转换为char *char []数据类型。

std::string str = "string";
char* chr = str;

Results in: “error: cannot convert 'std::string' to 'char' ...” . 结果: “错误:无法将'std :: string'转换为'char'...”

What methods are there available to do this? 有什么方法可以做到这一点?


#1楼

参考:https://stackoom.com/question/UqcF/std-string-to-char


#2楼

More details here , and here but you can use 更多细节在这里 ,并在这里 ,但你可以使用

string str = "some string" ;
char *cstr = &str[0];

#3楼

For completeness' sake, don't forget std::string::copy() . 为了完整起见,不要忘记std::string::copy()

std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];

str.copy(chrs, MAX);

std::string::copy() doesn't NUL terminate. std::string::copy()没有终止NUL。 If you need to ensure a NUL terminator for use in C string functions: 如果需要确保在C字符串函数中使用NUL终止符:

std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];

memset(chrs, '\0', MAX);
str.copy(chrs, MAX-1);

#4楼

This will also work 这也行

std::string s;
std::cout<<"Enter the String";
std::getline(std::cin, s);
char *a=new char[s.size()+1];
a[s.size()]=0;
memcpy(a,s.c_str(),s.size());
std::cout<<a;  

#5楼

char* result = strcpy((char*)malloc(str.length()+1), str.c_str());

#6楼

Alternatively , you can use vectors to get a writable char* as demonstrated below; 或者,您可以使用向量来获取可写的char *,如下所示;

//this handles memory manipulations and is more convenient
string str;
vector <char> writable (str.begin (), str.end) ;
writable .push_back ('\0'); 
char* cstring = &writable[0] //or &*writable.begin () 

//Goodluck  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值