みなさん、こんにちは。だから私はまだこのシーンに慣れていませんが、かなりの野心を持っており、できる限り多くのことを学ぼうとしています。私は自分自身を C++ に熟達していると考えていますが、常に DOS プログラムをプログラミングしており、最近は Windows API に視野を広げています.... そうは言っても、Windows API が UNI と大きく絡み合っていることに気付きました。 DOS は ANSI を使用していましたが、CODE は ANSI を使用していたので、ANSI は 8 ビットの文字コードを使用し、UNI-CODE は 16 ビットを使用していることがわかります。私の質問は次のとおりです。
1) なぜこれが重要なのですか.. 16 ビットと 8 が対になっているため、より具体的であるか、より多くの情報を保持できるのでしょうか? つまり、ANSI がサポートしていない UNI-CODE がサポートしている文字がいくつかあることは知っていますが、それは何ですか??
2) TCHAR と WCHAR の違いは何ですか? それは単なる 16 ビット版の char ですか? WCHAR がワイド文字の場合、TCHAR は何ですか?
3) LPWSTR がワイド文字列への長いポインタであることは理解していますが、いつこれを使用しますか?またその理由は? それは単にWindowsのものですか?長いポインターは自動的に16ビットではありませんか?それは、通常のポインターが8ビットであることを意味しますか? もしそうなら、なぜ余分なビットが必要なのですか?
4) 次に、なぜ wstring が必要なのですか?また、特定の関数で wchar と tchar を使用する必要があるのはなぜですか? すなわち
wstring myStr;
TCHAR myChar;
if (myStr.find(myChar) != string::npos) { krmormrm }
またはそれは問題ですか..
char myChar;
if (myStr.find(myChar) != string::npos) { jnrnikvnr }
5) 最後になりましたが、変換なしで WCHAR と wstring または int を表示するのに問題がありました。
WCHAR myChar = '1';
int i = 2;
wstring myString;
ofstream File1("myFile.txt");
if (File1.is_open())
{
File1 << (char)myChar; //if i didn't typecast it to char it displayed 49 instead of 1;
File1 << (WCHAR)i; //if i didn't typecast it to WCHAR(like to char instead)it displays symbols
WCHAR temp;
copy(myString.begin(), myString.end(), temp);
File1 << (char)temp;
}
わかりましたので、wstringとコピーに少し問題がありました。私が実際のプログラムで行ったこと (これは簡単なスクリプトにすぎません) は、9 つの WCHAR 変数を取りました... wstringstreamを使用して、それらすべてをその変数 (wss) にロードし、次にmyString (私の wstring 変数) にロードしました...それらがすべて正しくロードされたことを確認して、それをWCHAR一時にコピーしてfile1に送信したので、ロードされたものを物理的に確認できましたが、何らかの理由で、必要な変数と不要な追加変数をロードし、コードを何度も調べましたそして、何も問題が見つかりませんでした..だから私はコピー機能を取り除き、次のようなforループで各変数を個別に表示しました:
for (int i = 0; i < 81; i++)
{
File1 << "Box " << (WCHAR)i << ": " << (char)BoxNum[i] << "\n";
}
そして、すべてが正しい値を保持していると結論付けました...参考までに、値をテキストボックスに入力し、テキストを取得して個々の変数に保存していました..テキストボックスは9つずつ並んでいます...行と列の9...そして、最初の行のボックスの変数を使用してmyStringに入れたので、string.find()関数を使用して、ボックスの代わりにその行の数字をチェックできましたボックスで..私の問題はこのwstringを表示していました......とにかく笑できるだけ多くの情報を提供しようとして申し訳ありませんが、誰かが私のためにその問題を解決できるかもしれません。