문자열을 출력하는 데 문제가 있습니다. 나 좀 도와 줄 수있어?문자열을 char로 변환하는 방법은 무엇입니까?
다음에, const char * i
및 const char ** o
이 주어진다.
"*o = temp
"은 "std::string
"과 "const char *
"이 적합하지 않다는 오류를 생성합니다. 문제가 무엇입니까?
문자열을 출력하는 데 문제가 있습니다. 나 좀 도와 줄 수있어?문자열을 char로 변환하는 방법은 무엇입니까?
다음에, const char * i
및 const char ** o
이 주어진다.
"*o = temp
"은 "std::string
"과 "const char *
"이 적합하지 않다는 오류를 생성합니다. 문제가 무엇입니까?
우선 로컬 char 포인터를 할당하고 이미 호출 된 함수에서 사용하려고합니다.이 함수는 이미 파괴되었습니다. 그래서 대신 당신은 이것을해야합니다. 가정 메모리는 O 할당됩니다 :
strcpy(*o,temp.c_str());
*o=temp
당신은 그러나 오는 문자 (또는 문자의 순서)를 가리키는 포인터가있는 표준 : : 문자열을 가리키는 포인터에 오 점을 의미합니다. 허용되지 않습니다. 다른 방법은 작동합니다 : temp=*o
왜냐하면 std :: string 객체는 char *을 객체에 할당 할 때 일어나는 일을 정의하기 때문입니다 (null로 끝나는 문자열을 객체로 복사). temp에서 char *로 복사해야하는 경우 o *가 가리킨다. strcpy() 및 C++에서 strcpy(*o,temp.c_str())
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) };
}
문 의 strcpy를 (* 오, temp.c_str()); 가 작동하지 않았습니다. 이 문제는 에 의해 해결되었습니다. o = temp.c_srt(); 대신 어쨌든 고마워.
['std :: copy()'] (http://en.cppreference.com/w/cpp/algorithm/copy)를 사용하십시오. –
무엇을하려고합니까? 'temp'의 내용을'* o'에 복사 하시겠습니까? 그리고 왜 당신은'char ** '을 지나치나요? mytask는 문자열에 대해서도 메모리를 할당해야합니까? – Praetorian
당신이하려고 한 것을 우리에게 말하면 많은 도움이 될 것입니다. 'o'가 반환 할 때 더 이상 존재하지 않을 객체를 가리키는 것처럼 보입니다. –