|
String fn; 으로 선언할 경우 fn은 UnicodeString Type이 됩니다. (6.0 시절에는 AnsiString 이었지만...)
AnsiString으로 명시적으로 선언해 보세요.
UnicodeString에서 c_str()을 사용하면 char *를 리턴하는 것이 아니라 WideChar *를 리턴합니다.
ifstream 이 char를 사용하니 WideChar 를 처리를 잘 못해서 생긴 문제 같습니다.
왕초보 님이 쓰신 글 :
: String fn;
: if (FileOpenDialog1->Execute()) {
: fn = FileOpenDialog1->FileName;
: }
: else return;
: std::ifstream fs(fn.c_str() );
: if (fs.fail()) {
: ShowMessage("file error:" + fn);
: return;
: }
:
: 위 코드에서 파일열기 실패가 계속 뜨는데 왜 그럴까요?
: 참고로 파일이름에 한글이 없으면 정상적으로 동작합니다
: 한글이 파일이름에 있으면 실패...
|