2014-06-15 2 views
-3

문자열을 출력하는 데 문제가 있습니다. 나 좀 도와 줄 수있어?문자열을 char로 변환하는 방법은 무엇입니까?

다음에, const char * iconst char ** o이 주어진다.

"*o = temp"은 "std::string"과 "const char *"이 적합하지 않다는 오류를 생성합니다. 문제가 무엇입니까?

+0

['std :: copy()'] (http://en.cppreference.com/w/cpp/algorithm/copy)를 사용하십시오. –

+2

무엇을하려고합니까? 'temp'의 내용을'* o'에 복사 하시겠습니까? 그리고 왜 당신은'char ** '을 지나치나요? mytask는 문자열에 대해서도 메모리를 할당해야합니까? – Praetorian

+0

당신이하려고 한 것을 우리에게 말하면 많은 도움이 될 것입니다. 'o'가 반환 할 때 더 이상 존재하지 않을 객체를 가리키는 것처럼 보입니다. –

답변

1

우선 로컬 char 포인터를 할당하고 이미 호출 된 함수에서 사용하려고합니다.이 함수는 이미 파괴되었습니다. 그래서 대신 당신은 이것을해야합니다. 가정 메모리는 O 할당됩니다 :

strcpy(*o,temp.c_str()); 
1

*o=temp 당신은 그러나 오는 문자 (또는 문자의 순서)를 가리키는 포인터가있는 표준 : : 문자열을 가리키는 포인터에 오 점을 의미합니다. 허용되지 않습니다. 다른 방법은 작동합니다 : temp=*o 왜냐하면 std :: string 객체는 char *을 객체에 할당 할 때 일어나는 일을 정의하기 때문입니다 (null로 끝나는 문자열을 객체로 복사). temp에서 char *로 복사해야하는 경우 o *가 가리킨다. strcpy() 및 C++에서 strcpy(*o,temp.c_str())

1

std::string.c_str(), 그것은이 방법으로 주위에 원시 포인터를 전달하는 이례적인 사용합니다.

돌아 오는 0도 많이 달성하지 못합니다.

나는 이런 걸보고 기대 :

std::string mytask(std::string const& i) 
{ 
    return "mytask:" + i; 
} 

int main() 
{ 
    std::string const number { '1' }; 
    std::string const ret { mytask(number) }; 
} 
0

문 의 strcpy를 (* 오, temp.c_str()); 가 작동하지 않았습니다. 이 문제는 에 의해 해결되었습니다. o = temp.c_srt(); 대신 어쨌든 고마워.

관련 문제