파일을 여는 데 다양한 장소에서 일반 fopen()을 사용하는 많은 양의 기존 C++ 코드가 있습니다. 일반적으로 사용 된 경로는 절대 경로이며 "C : \ Program Files (x86) \ MyProgram ..."또는 "C : \ Users \ Public \ MyProgramData ..."로 시작합니다."Program Files"또는 Users Public에 비 ASCII 문자가 있습니까?
프로그램 및 데이터는 표준 설치 프로그램 (InnoSetup)을 통해이 위치에 설치됩니다.
("C : \ Program Files (x86)"및 "C : \ Users \ Public"은 코드에 하드 코딩되어 있지는 않지만 권장되는 프로그램 및 데이터 설치 위치이므로 가장 자주 사용됩니다. 설치 프로그램이 파일을 열 때 사용하는 경로 (사용자의 컴퓨터에있는 로컬 이름이 무엇이든간에).
영어가 아닌 다른 버전의 Windows에서 이러한 경로가 발생할 수 있습니다. 접두사에는 ASCII 문자가 아닌 문자가 포함될 수 있습니다. 그러면 fopen()이 불만을 갖습니다. "프로그램 파일"를
다음 참조는 가장 일반적인 언어 중 내 유일한 잠재적 인 걱정처럼 보이게하는 것은 ("Programfájlok") 헝가리어입니다 :- http://en.wikipedia.org/wiki/Program_Files
- http://www.samlogic.net/articles/program-files-folder-different-languages.htm
"Users \ Public"의 경우 그런 일반적인 언어에 대한 번역을 제공하는 참조를 찾을 수 없었지만 스페인어로는 Pública가되어야한다고 생각합니다.
나는이 두 경로에서 일반 fopen()을 사용하여 전 세계에서 발생할 수있는 함정을 알고 있습니까?
내가 질문에 말했듯이, 나는 이미 fopen을 사용하는 코드의 많은 양의()이있다. 나는 그것을 _wfopen()으로 변환 할 수 있다는 것을 안다. 그러나 현재로서는 코드를 변경하는 것이 위험하므로 코드를 그대로두면 위험을 평가하려고합니다. –
아니요. 여러분의 질문에'_wfopen'과 유니 코드 (와이드 문자) 지원에 대해 알고 있다고 언급 한 곳이 없습니다 .... 필자는 개인적으로 유니 코드 파일 이름과 유니 코드가 아닌 파일 처리 문제를 많이 가지고있었습니다. strcpy/strcmp 등을 설명하기 위해 50K 라인 코드베이스를 리팩토링해야했습니다. – corn3lius