23

我有一个要转换的字符串,string = "apple"并希望将其放入这种风格的 C 字符串中char *c,它包含{a, p, p, l, e, '\0'}. 我应该使用哪种预定义方法?

4

4 回答 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 个步骤来完成。

  1. 转换字符串 -> const char*

  2. 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 回答