2013-04-24 4 views
0

* (하지 CONST의 char *)를 숯불에 문자열을 전송할 수 있습니다. 이 일을 할 수있는 방법이 있습니까?어떻게 내가 그런 짓을하고 싶어

+0

'const char *'로 전송 한 다음'strcpy'를 실행하십시오 – pickypg

+0

네, 효과가있었습니다! 많은 감사! – user1933667

+2

이것은 아마도 XY 문제 일 수 있다고 생각합니다. 이 일을 통해 성취하고자하는 바를 우리에게 말해 줄 수 있습니까? 대부분의 경우,이 작업을 수행하는 방법을 묻는 대신,이 작업을 * 피하는 * 방법을 묻는 것이 좋습니다. –

답변

0

당신은 할 수 있습니다 :

char a[100]; 
::strncpy(a, result.c_str(), 100); 

는 널 (null) 종료주의하십시오.

5

문자열의 첫 번째 문자의 주소를 사용할 수 있습니다.

a[0] = &result[0]; 

이것은 C++ 11에서 작동하는 것이 보장됩니다. 내부 문자열 표현은 연속적이어야하며 C 스타일 문자열과 같이 Null로 끝나야합니다.

C++ 03에서는 이러한 보증이 존재하지 않지만 모든 일반적인 구현이 작동합니다.

+0

const가 선언되지 않으면 (또는 const-ness를 버리지 않는 한) 컴파일되지 않을 것이라고 생각합니다. –

+0

@JeremyFriesner const가 아닙니다. http://en.cppreference.com/w/cpp/string/basic_string/operator_at –

+0

Phooey, 바로 당신입니다. 나는 내 의견을 철회 :) –

1
string result; 
char a[100] = {0}; 
strncpy(a, result.c_str(), sizeof(a) - 1); 
1

"copy"라는 멤버 함수 (메서드)가 있습니다.

하지만 버퍼를 먼저 만들어야합니다. 이

string result; 
char* a[100]; 
a[0] = new char[result.length() + 1]; 
result.copy(a[0], result.length(), 0); 
a[0][result.length()] = '\0'; 

(참조 : http://www.cplusplus.com/reference/string/basic_string/copy/) 같은

그런데, 나는 당신이 의미 궁금

string result; 
char a[100]; 
0

오래된 옛날 식 방법 :

#include <string.h> 

a[0] = strdup(result.c_str()); // allocates memory for a new string and copies it over 
[...] 
free(a[0]); // don't forget this or you leak memory! 
0

네가 lly, 진정으로 이것을 피할 수는 없으며, C++에서 제공하는 모든 것을 버리지 말고, 원시 배열과 strncpy과 같은 끔찍한 함수를 사용합니다.

한 합리적인 가능성은 벡터로 문자열에서 데이터를 복사하는 것입니다 :

char const *temp = result.c_str(); 
std::vector<char> a(temp, temp+result.size()+1); 

당신은 일반적으로 생각 문자열의 데이터를 남길 수 있습니다 - 당신은 문자열의에 const가 아닌 포인터를 필요로하는 경우 데이터의 경우 &result[0]을 사용할 수 있습니다.