C/C++ の場合、Linux/Posix および Windows でユーザー名を取得する移植可能な関数はないようです。これを達成するための最も面倒ではなく、堅牢な移植可能なコードは何でしょうか?
Linux では USER 環境変数が常に定義されているようですが、Windows では USERNAME 変数が定義されているようです。getenv に依存することで、windows.h のインクルードを回避し、プリプロセッサ ステートメントを最小限に抑えることができます。
char * user_name = getenv("USER");
if (!user_name) {
user_name = getenv("USERNAME");
}
しかし、このアプローチは中途半端に堅牢ですか? それとも、私は別の解決策を知らないのでしょうか? そして、私はiOSに対しても無知でした...