アプリケーションを Windows から Linux に移植しようとしています。Windows ではGetEnvironmentStrings()
、windows.h に関数があり、現在のプロセスの環境変数とその値を NAME=VALUE の形式で提供します。Linux の場合、このような環境変数を使用します
for (char **en=environ; *en; en++) {
std::string str(*en)
env.push_back(str); //env is a vector of strings
}
まだアプリケーションが機能していないようです。Windows では、env ベクトル (文字列のベクトル) に渡された文字列のサイズを出力すると、すべての文字列のサイズが 48 バイトとして出力されます。一方、Linux ではサイズは 8 です。元のアプリケーションは Unicode バージョン ( GetEnvironmentStringsW
) を使用し、変換関数 を使用して、返されたワイド文字列を 8 ビット文字列に変換しますWideCharToMultiByte
。
文字エンコーディングについては十分な知識がありませんが、文字列のエンコード方法に関係があると思います。何がうまくいかないのでしょうか?