• ベストアンサー

C++でのリアルタイム入力の方法を教えてください

C++の入力は大体 cin>> a ; といったcinを使っていますが、これはEnterを押さなくては入力できません。 Enterを押さなくても入力が完了されるような関数があるのでしょうか。 どうか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

標準的な方法は「ありません」。 Visual C++ であれば _getch, _getche でしょうか。

SULT_1
質問者

お礼

お返事ありがとうございます。 実際に試してみて、うまくいきました。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語で、ioctlを使用し入力待ちつつ実行を続けたい

    C言語で入力を読むときgetc関数やscanf関数を 使用することが多いのですが これらの関数を使用すると入力が完了するまで そこでプログラムの実行がストップしてしまい リアルタイムで処理できません そこでioctlを使用して ioctl(0, I_NREAD, &n) というコードを書き、入力があったかどうかを調べようと思いました ところがこの方法だとenterが入力されない限り キー入力があったと認識されないので たとえば"a"、"b"、"c"、"d"と入力してもすぐには読み込めず この入力のあとにenterを入力して はじめて文字が読めます enterが入力されなくても、入力された文字を調べるには どうしらたよいのでしょうか?

  • コンソールで整数を入力(C#)

    C#でコンソールから整数を入力したいのですが、 やり方がみつかりません。分かる方教えてください。 C++だと下のようなコードです。 int a; cout<<"整数を入力して!"; cin>>a; cout<<"入力した整数は:"<<a; こんなこと分からなくてすみません...

  • C++:cinが上手く使えない

     そもそもcinについてあまり詳しい事は知らないのですが よろしくおねがいします。  cinを使って整数を取りこもうとする時、数字以外が 入ってしまうとおかしな動作をします。  例えば「10未満の整数値を取りこむまで続くループ」で 入力部分を作ろうとした時に、 while(1){  cout << "入力してください" << endl;  cin >> int_a;  if(int_a < 10) break; } 大体 以上の様に書くと、入力する時にアルファベットが 入ってしまうと 入力して下さい 入力して下さい …(エンドレス)… 入力して下さい となってしまいます。cinをあきらめてscanfにしてみると 今度は実行時エラーがでてしまいます。  整数を入力する事が出来て、なおかつアルファベットが 入力されても' 'で囲った値が入るようにするには どのようにすればよいでしょうか?

  • javascriptでの入力待ち方法

    こんにちは C++ではcinによって入力待ちをしますが、 JavaScriptでは " " のように、空白のカッコによって「ここに入れるための文字を入れてね」ということになるのですか? よろしければ回答お願いいたします。

  • 半角で(c)と入力すると丸囲みのcになってしまうのです

    エクセルで(c)と入力してエンターすると丸囲みのcになってしまうのですが、 どうしてでしょうか。半角で(c)としたいのです。 どなたか教えて下さい。

  • プロンプト入力 malloc( )

    #include <iostream.h> void f(char* str); main(){ char s[8] = "\0"; cout << "文字を入力" << '\n'; fgets(s, 8, stdin); f(s); } void f(char* str){ char* c; c = (char*)malloc(sizeof(char) * strlen(str)+1); cout << strlen(str) << '\n'; cout << sizeof(c); free(c); } - 結果 - 文字を入力 ( a、Ctrl+Z ) a 1 4 でした。 cout << sizeof(c); の結果は4でした。1バイトの入力だから\0を含めて 2バイトを確保したかった。 そのためにはどうしたらいいんですか? どうして4だったんですか? 文字を入力するとこで、Ctrl+Z の代わりに Enter を押すと Enter まで s に格納されてしまう。 cin を使うと8バイト以上の入力でも s に格納されてしまう。 そうならないためのよい方法があったら教えてください。

  • C言語で、文字とか入力されなくても実行を続けたい

    現在簡単なゲームをunix系のOSのC言語でつくってますが なにも入力されなくても停止せず実行を続けられる getcharのような関数はないのでしょうか? windows系のOSにはcons.hヘッダーあたりに そんな関数あったような気がするのですが。。。 普通のgetcharだと、文字が入力されるまで(enter押されるまで) そこで実行が一時中断されてしまい リアルタイムで動くプログラムができないのですが。。。

  • C++のcin命令について

     私は、C++言語を勉強している初心者です。  ある日、C++言語では、   「cin >> a >> b >> c;」と書くと、プログラムを実行したときに、   「3 4 5」と入力すれば、変数aには 3 が、変数bには 4 が、変数cには 5 が代入されるということを知りました。  けど、今まで私がC言語を使う際に使っていた、   「scanf("%d,%d,%d",&a,&b,&c);」という文では、プログラムを実行したときに、   「3,4,5」と入力すれば、変数aには 3 が、変数bには 4 が、変数cには 5 が代入されるというように、3つの数字の間にカンマを入れて数を代入するというプログラムを作りたいのですが、どうやってもcin命令では再現できません。  超初心な質問ですが、わかる方がいらっしゃったら、やり方を教えてください。

  • コンソールアプリの入力時に改行させたくない

    プログラミング初心者です。 Visal Studio 2010を使用してC++の勉強をしています。 コンソールアプリケーションにてstd::cinを使ってstring型かchar型変数への入力を受けさせます。 cinによる入力待ちの状態になったとき、何も入力しないでエンターキーを押すと、コンソールの画面上でカーソルが次の行へ移動し、まだ入力を待ち受けてくれます。 これを、「何も入力されてない状態でエンターキーが押されたら、変数へ何も代入しない or ヌルなどを代入して、終わり」という動作にすることはできないでしょうか? 例えるなら、getcharです。getcharならエンターを押すと改行コードを受け取ってそのまま終わってくれます。しかし、入力には複数の文字列を想定しているため、getcharは使いたくありません。 cin以外の入力でも構いませんので、何か良いアイディアがありましたらご教示ください。 以上になります。説明が下手で申し訳ありません。お読みいただきありがとうございました。 よろしくお願いいたします。

  • cinで、異なる型のデータが入力された時の対処法

    こんにちは。 OSは現在、64bit版のWindows7を使っています。 C++のcinストリームで指定した変数の型とは異なる型のデータが入力された時に、再びデータを入力するように促すC++プログラムを作成しました。 そのプログラムの内容は以下の通りです。(main関数のみ) ------------------------------------------------------------ int main() { int int_a=0; while(true) { cout << "整数値を入力せよ。:"; cin >> int_a; nn; if(cin.good()==0){ //cin.good()は、直前のcinで入力されたデータ型が、指定した変数の型に一致しなければ、0を返す。 cout<<"整数値以外のデータが入力された。"<<endl; cin.clear(); //cinストリームの入力バッファをクリアする。 cin.seekg(0); //cinストリームの入力バッファの先頭に移動する。 continue; } else{ break; } } return 0; } ------------------------------------------------------------ コマンドプロンプト上で、Borland C++ Compiler 5.5 のbcc32コマンドを使い、 上記のソースから実行ファイルをビルドして実行すると、以下のように上手くいきました。 ------------------------------------------------------------ C:\Emacs_for_Windows\C_and_C++_Programs >bcc32 1.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland 1.cpp: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland C:\Emacs_for_Windows\C_and_C++_Programs >1.exe 整数値を入力せよ。:a 整数値以外のデータが入力された。 整数値を入力せよ。:abc 整数値以外のデータが入力された。 整数値を入力せよ。:-1 -1が入力された。 C:\Emacs_for_Windows\C_and_C++_Programs > ------------------------------------------------------------ 一方、Gnu Emacs for Windows 23.4のシェルモードで、Cygwinのbashを使い、Cygwinのg++-3.exeを使って実行ファイルをビルドし、それを実行してみると、以下のように上手く動作しませんでした。。 ------------------------------------------------------------ Kei-Lavie@Kei: ~/C_and_C++_Programs/Cpp_Programs $ /bin/g++-3.exe 1.cpp Kei-Lavie@Kei: ~/C_and_C++_Programs/Cpp_Programs $ ./a.exe 整数値を入力せよ。:a 整数値以外のデータが入力された。 整数値を入力せよ。: 整数値以外のデータが入力された。 整数値を入力せよ。: 整数値以外のデータが入力された。 整数値を入力せよ。: 整数値以外のデータが入力された。 整数値を入力せよ。: ・ ・ ・ ------------------------------------------------------------ 一体何がいけないのかわからず、困っています。 ちなみに、Emacsのシェルモードで、CygwinのbashをUTF-8環境で使えるように設定しているので、ソースファイルのエンコーディングはUTF-8(BOMなし)で、改行コードはCRCLにしています。 BCCのbcc32コマンドでは、エンコーディングシステムはSJISしか扱えないようなので、UTF-8からSJISに変更してコンパイルしました。 以上の件について何かご存知の方がいらっしゃれば、是非教えて頂きたいと思います。 では、よろしくお願い致します。