現在使用されているロケールとは異なるロケールにある Windows 7 の現在のディレクトリを読み取る必要があります。そこで、wchar_t* とのユニコード互換性があるため、GetCurrentDirectoryW() を使用することを考えました。ただし、既存の API を使用する必要があるため、これを char* に変換する必要があります。この目的のために、wcstombs() 関数を使用しました。ただし、変換が正しく行われていません。以下に含まれているのは、私が使用したコードです。
wchar_t w_currentDir[MAX_PATH + 100];
char currentDir[MAX_PATH + 100];
GetCurrentDirectoryW(MAX_PATH, w_currentDir);
wcstombs (currentDir, w_currentDir, MAX_PATH + 100);
printf("%s \n", currentDir);
私がいる現在のディレクトリは、C:\特斯塔敌人です。変換が完了すると、フルパスの 'C:\' の部分だけが正しく char* に変換されます。他の文字はそうではなく、ジャンク値です。私が使用しているこのアプローチの問題は何ですか? どうすればこれを修正できますか?
ありがとうございました!