我有一个要转换的字符串,string = "apple"
并希望将其放入这种风格的 C 字符串中char *c
,它包含{a, p, p, l, e, '\0'}
. 我应该使用哪种预定义方法?
问问题
127837 次
4 回答
34
.c_str()
返回一个const char*
。如果您需要可变版本,则需要自己制作副本。
于 2012-08-06T01:10:21.427 回答
9
vector<char> toVector( const std::string& s ) {
string s = "apple";
vector<char> v(s.size()+1);
memcpy( &v.front(), s.c_str(), s.size() + 1 );
return v;
}
vector<char> v = toVector(std::string("apple"));
// what you were looking for (mutable)
char* c = v.data();
.c_str() 适用于不可变。矢量将为您管理内存。
于 2012-08-06T01:54:46.333 回答
0
string name;
char *c_string;
getline(cin, name);
c_string = new char[name.length()];
for (int index = 0; index < name.length(); index++){
c_string[index] = name[index];
}
c_string[name.length()] = '\0';//add the null terminator at the end of
// the char array
我知道这不是预定义的方法,但认为它可能对某人有用。
于 2015-05-15T13:18:33.030 回答
0
您可以通过 2 个步骤来完成。
转换字符串 -> const char*
const char* -> CString
string st = "my str";
const char* stBuf = st.c_str(); // 1. string to const char *
size_t sz; // save converted string's length + 1
wchar_t output[100] = L""; // return data, result is CString data
mbstowcs_s(&sz, output, 50, stBuf, 50); // converting function
CString cst = output;
于 2022-02-27T10:28:59.047 回答