昔、大学でCとC++をやっていましたが、C++にはあまり注目されていませんでした。ここでC++に注意を払いたいのですが、getch()
関数を使用していると、以下から警告が表示されます。
警告C4996: 'getch':このアイテムのPOSIX名は非推奨です。代わりに、ISO C++準拠の名前_getchを使用してください。詳細については、オンラインヘルプを参照してください。
現在、VS 2005 Expressを使用していますが、この警告をどうすればよいかわかりません。エラーメッセージなど、キーを押す必要があるものをgetch()
した後、printf()
を使用する必要があります。
それを手伝ってくれませんか。
これらの名前はプログラマーが選択できるように予約されているため、Microsoftはアンダースコアを廃止せずに名前をマークすることにしました。実装固有の拡張機能は、CまたはC++標準に準拠する場合は、グローバル名前空間でアンダースコアで始まる名前を使用する必要があります。または、POSIX/ANSI/ISO Cなど、標準に準拠した複合環境としてマークする必要があります。関数は、これらの標準の1つに対応します。
もちろん、物事をよく知っているP. J. Plaugerによる説明については、 getcwd() に関するこの回答も読んでください。
ユーザーが入力したいくつかのキーを待つことだけに関心がある場合は、getchar
を使用しない理由は実際にはありません。ただし、ユーザーが_getch
やその仲間を使用する方が実用的で便利な場合もあります。ただし、これらはCまたはC++標準で指定されていないため、プログラムの移植性が制限されます。心に留めておきます。
C++に興味があるなら、なぜprintf
とgetch
なのですか?代わりにcout
とcin.get
の使用を検討してください。
getch()の代わりに_getch()を使用します
なぜこれが必要なのですか?単一の文字をキャプチャする必要がある場合は、getchar()
を使用してみませんか?
「std :: getc(stdin);」を使用できます。 'getch();'のように機能します私のプログラムで。 'getch()'の良い代替手段だと思います。間違っている場合は教えてください。
#include <cstdio>
switch (std::getc(stdin)) {
case 'a': cout << 'a' << endl ; break;
case 'b': cout << 'b' << endl ; break;
default: cout << '$' << endl; break;
}
コンソールで「a」を入力すると「a」が出力されます。