I want a 챨 변환하십시오 표준용량 구체화하십시오 붙여넣습니다 챨 또는 [] 데이터 유형:.
std::string str = "string";
char* chr = str;
결과: "오류: "표준용량 구체화하십시오" 로 변환할 수 없는 "챨." ".
이를 위해 어떤 방법을 사용할 수 있습니까?
std::string str = "string";
const char *cstr = str.c_str();
참고로 이 const char * ',' a '되돌려줍니다 # 39, 너회가 aren& c_str () '에서' c 스타일 구체화하십시오 반환되었습니다 변경할 수 없다. # 39, ll 이 처음 복제본에 스케쳐내 you& 처리할 수 있다.
std::string str = "string";
char *cstr = new char[str.length() + 1];
strcpy(cstr, str.c_str());
// do stuff
delete [] cstr;
또는 현대의 C++:
std::vector<char> cstr(str.c_str(), str.c_str() + str.size() + 1);
[자세한 내용은 여기] (https://stackoverflow.com/a/4152881/111307) 및 [here] (https://stackoverflow.com/a/10916896/111307) 이지만 사용할 수 있습니다.
string str = "some string" ;
char *cstr = &str[0];
std::string str = "string";
char* chr = strdup(str.c_str());
이상:
free(chr);
왜 내가 함께 새 [], 또는 다른 사람들과 같이 t # 39 don& 표준용량 벡터입니다 해야했다. I need a c 스타일 때문에 변경 가능 기초형상 char* 구체화하십시오 관심용 싶어서 호출하십시오 때 C 코드를 C 코드를 문자열 및 할당 해제 및 할당 물건을 free () 와 함께 변하는 경우는 malloc () (스트라고 /dev/raw/raw1 malloc) . 그래서 지나갈 경우 X it 기초형상 문자열이어야 내 일부 기능을 할 수 있는 C 로 짜여진 구속조건으로 it& # 39 의 주장을 힙에서의 할당할지 수 있다 (예를 들어, 함수 호출 할 수 있습니다) 에 대해 realloc 을 수행할 &prs.). 그러나 그것은 매우 낮다 (일부 사용자 재정의했습니다.) 인수를 통해 기대할 수 있을 것이라는 할당할지 새 []!
그냥 같은 경우 c 스타일 나타내는 문자열 a * 내용:
const char * ca = str.c_str ();
char * ca = new 챨 [스트리시즈 () +1]; 표준용량 복제본에 (스트라스베긴 (), 스트리런드 (), ca),
[] ',' T forget it don& # 39 를 삭제할 수 있다.
size_t const 개/최대 cx3-80. 최대 자 // 챨 ca [맥스야] = {}; 표준용량 복제본에 (스트라스베긴 (), (스트리시즈 > (), = 맥스야? 스트라스베긴 () + 최대: 스트리런드 ()), ca).
vector<char> v(str.begin(), str.end());
char* ca = &v[0]; // pointer to start of vector
비록 도움이 필요하면, 다른 대답이 '*', '상수' 없이 '를 명시적으로 변환하십시오 표준용량 구체화하십시오 챨 const_cast' 는 친구.
std::string str = "string";
char* chr = const_cast<char*>(str.c_str());
현학적 엄격하게 할 수 없습니다, [] 데이터 변환 " 표준용량 구체화하십시오 붙여넣습니다 챨 net/* 또는 챨 type.".
다른 답을 로 표시한 복사할 수 있습니다 컨텐츠의 챨 * const char 배열 또는 표준용량 구체화하십시오 을 만들 수 있는 내용이 있기 때문에, c, " style" 표준용량 구체화하십시오 액세스할 수 있습니다.
std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];
str.copy(chrs, MAX);
std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];
memset(chrs, '\0', MAX);
str.copy(chrs, MAX-1);
char* result = strcpy((char*)malloc(str.length()+1), str.c_str());
Oop 의 스타일을 변환
class StringConverter {
public: static char * strToChar(std::string str);
};
char * StringConverter::strToChar(std::string str)
{
return (char*)str.c_str();
}
사용
StringConverter::strToChar("converted string")