나는 이런 이상한 버크 덕분에 많은 프로젝트를 코딩하지 않아야했다. 나는 바보 같이 보이고 위험해질만큼 위험하다. 그래서 여기에 간다 ...함수에서 C- 문자열을 반환하면 임의의 문자가 나오는 이유는 무엇입니까?
나는 다음과 같은 기능을 썼다.
const char* readFileToString(const char* filename) {
const char* result;
std::ifstream t(filename);
std::stringstream buffer;
buffer << t.rdbuf();
result = buffer.str().c_str();
return result;
}
나는 기대 file.txt
는 readFileToString("file.txt")
가 hello
반환해야 함을, hello
포함되어있는 경우, 그. 대신, 그것은 H�rv�0
줄을 따라 왜곡 된 텍스트를 반환합니다. 그러나 반환하기 바로 전에 std::cout << result;
을 입력하면 hello
이 인쇄됩니다.
C++의 이상하고 불가능한 버클입니까? 어떻게 수정해야합니까?
반환 포인터를 손상되고 그래서 따라서 잘못된 메모리 위치
에 포인트를 초래 거의 좋은입니다 생각. 값으로 반환 된 std :: string을 사용하면됩니다. –