_wfopen 예제

텍스트 모드에서 특정 파일을 열거나 만들도록 지정하려면 모드 문자열(rt, w+t 등)에 t를 더해 보세요. 마찬가지로 바이너리 모드를 지정하면 모드 문자열 (wb, a +b 등)에 b를 부속합니다. fopen은 또한 t 또는 b를 모드 문자열의 문자와 + 문자 사이에 삽입 할 수 있습니다. 예를 들어 rt+는 r+t와 동일합니다. 내 경우에는 그냥 fopen와 같은 인수를 받아 들이는 사용자 지정 함수 (비 Win32 플랫폼에서 일반 fopen에 매크로)를 사용 하지만 내부 UTF16으로 문자열을 변환 하 고 _wfopen @dougbinks 전달 , @ocornut, 난 그냥 MinGW에 의해 SDL2 OpenGL2 예제를 구축 그리고 버그는 여전히 제시, 내가 이것을 구축하기 전에 내가 여러 번 발견 한 방법 (그것은 비 ASCII 폴더에서 글꼴을 열려고 시도에 어설션됩니다). 그러나 ImOpenFile 함수에서 _MSC_VER를 _WIN32로 대체했을 때 모든 것이 잘 작동합니다 (ImguiExample-failed.exe (있는 그대로 빌드됨)를 시도한 다음 ImguiExample-fixed.exe (내 수정 사항으로 빌드됨)) OSX 및 Linux의 경우 이후 친애하는 imgui에 대해 변경할 필요가 없다고 생각합니다. 두 fopen에 UTF-8을 허용 – 대부분의 시스템이 기본적으로 UTF-8 로케일을 가지고 설정되어 있지만 리눅스에 약간의 복잡성이 있지만 모든 않습니다. 그러나 앱은 fopen인터페이스가 항상 동일하기 때문에 필요한 모든 것을 처리할 수 있습니다 (예를 들어 iconv 사용) 로캘에 의해 변경되는 버퍼가 해석되는 방법입니다. 다음 프로그램은 유니코드 인코딩이 있는 텍스트 모드에서 파일을 만듭니다(또는 있는 경우 파일을 덮어씁니다). 그런 다음 파일에 두 개의 문자열을 쓰고 파일을 닫습니다. 출력은 _wfopen_test.xml이라는 파일로, 출력 섹션의 데이터가 들어 있습니다. 마지막으로 함수를 사용하는 프로그램 예제입니다.

원래 robots.txt 파일에는 쓰기 권한이 있습니다. @dougbinks, 당신은 아주 오래된 MinGW 버전이 있는 것 같습니다. 나는 항상 신선한 버전 (4.9 또는 5 +)를 사용합니다 (심지어 4.7은 동일합니다). 내 모든 경우에 fopen로 로캘에 대한 ANSI 문자열을 허용하고 UTF-8을 싫어합니다. UTF-16으로 변환하고 _wfopen을 사용하면 오른쪽 UTF-8 경로로 파일을 열 수 있습니다. 나는 심지어 _wfopen을 아래와 같이 _wfopen_s로 변경하려고 시도했습니다 : 2. 프로젝트의 설정은 완전히 잘못되었습니다. 예를 들어 디버그/릴리스 또는 VC++ 런타임의 다른 버전을 혼합합니다. fopen 함수는 파일 이름으로 지정된 파일을 엽니다. 기본적으로 좁은 파일 이름 문자열은 ANSI 코드 페이지(CP_ACP)를 사용하여 해석됩니다.

Windows 데스크톱 응용 프로그램에서 는 SetFileApisToOEM 기능을 사용하여 OEM 코드 페이지(CP_OEMCP)로 변경할 수 있습니다. AreFileApisANSI 함수를 사용하여 ANSI 또는 시스템 기본 OEM 코드 페이지를 사용하여 파일 이름이 해석되는지 여부를 확인할 수 있습니다. _wfopen은 펜의 와이드 문자 버전입니다. _wfopen에 대한 인수는 와이드 문자 문자열입니다. 그렇지 않으면 _wfopen 및 fopen이 동일하게 작동합니다. _wfopen을 사용하는 것만으로는 파일 스트림에 사용되는 코딩된 문자 집합에 영향을 주지 않습니다. 예를 들어 쓰기 비트가 마스크에 설정된 경우 새 파일은 읽기 전용으로 설정됩니다. MS-DOS 및 Windows 운영 체제에서는 모든 파일을 읽을 수 있습니다. 쓰기 전용 권한은 부여할 수 없습니다.