안녕하세요, 여기에 내 코드에 문제가 있습니다. 당신은 경로에 통과FindFirstFile LPCSTR
LPCSTR mergeString(LPCSTR firstString, std::string secondString)
{
string convertedString = ConvertString(firstString);
LPCSTR mergedString;
int i = convertedString.size();
convertedString.insert(i, secondString);
mergedString = (convertedString.c_str());
return mergedString;
}
void GetFiles(LPCSTR path)
{
WIN32_FIND_DATA File_Data;
LPCSTR lPath = mergeString(path,"\\*.txt");
FindFirstFile(lPath, &File_Data);
wcout << File_Data.cFileName;
}
당신은 GetFiles에 (LPCSTR 경로) 그럼이 확장 (\ *. TXT) 모든 것이가를 반환하는 경우를 제외하고 작동과 함께 경로를 병합 할 mergestring 기능을 사용에 사용할 LPCSTR 다음 그냥 이상한 문자 및 많은 이유를 모르거나이 일을 더 좋은 방법은 무엇입니까? File_Data
가 정의 된 곳이기 때문에 귀하의 GetFiles
기능은 더 이상 유효 메모리에 대한 포인터를 반환
이 주요 문제 : http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope – chris
[이 문서에 따르면 'c_str' 메쏘드] (http://www.cplusplus.com/reference/string/string/c_str/)에서 리턴 값은 "다음 번에 일정하지 않은 멤버 함수를 호출 할 때까지 변경되지 않고 유지 될 것입니다. 문자열 개체. " 객체를 파기하면 상수가 아닌 멤버 함수로 계산됩니다.이 시점에서'c_str'에 의해 반환 된 값은 더 이상 유효하지 않습니다. –