C++ で小さな Win32 アプリを開発しています。私はずっと前に C++ の基礎を勉強していたので、C++ の文字列のせいで完全に混乱してしまいました。なし、WCHAR
またはとTCHAR
しかchar
ありませんでしString
た。少し調査した結果、使用しないことにしましたTCHAR
。
私の問題は非常に単純だと思いますが、C++ で文字列を操作する明確なガイドが見つかりません。ここ数年の PHP コーディングの影響を受けて、文字列操作で単純なものを期待していましたが、間違っていました!
簡単に言えば、新しいデータを文字列に入れるだけです。
WCHAR* cs = L"\0";
swprintf( cs, "NEW DATA" );
これは私の最初の試みでした。アプリをデバッグするときに、swprintf が最初の 2 文字だけを cs 変数に入れることを調査しました。私はこの方法で問題を解決しました:
WCHAR cs[1000];
swprintf( cs, "NEW DATA" );
しかし、私の場合、新しいデータは定数値ではなく、別の変数であり、1000 文字よりも長くなる可能性があるため、通常、このトリックは失敗する可能性があります。そして私のコードは次のようになります:
WCHAR cs[1000];
WCHAR* nd1;
WCHAR* nd2;
wcscpy(nd1, L"Some value");
wcscpy(nd2, L"Another value"); // Actually these vars stores the path for user selected folder
swprintf( cs, "The paths are %s and %s", nd1, nd2);
この場合、nd1 と nd2 の合計文字数が 1000 文字を超える可能性があるため、重要なデータが失われます。
問題は、このように宣言された WCHAR 文字列に必要なすべてのデータをWCHAR* wchar_var;
、何も失うことなくコピーするにはどうすればよいかということです。
PS 私はロシア人なので、質問が不明確かもしれません。私の問題をより明確かつ複雑に説明しようと思います。