質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

1767閲覧

C++で入力の有無による分岐

influJr

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/12/29 12:03

前提・実現したいこと

C++で、入力を受け取ったかどうかで分岐することってできますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2020/12/29 12:14

何からの入力ですか?
influJr

2020/12/30 02:50

すいません標準入力からです
episteme

2020/12/30 05:25

Windows/VisualC++ でのキー入力の有無なら _kbhit() で得られるんですけどねぇ...
yumetodo

2020/12/30 08:21

標準入力からということは、キーボードからとは限らず、なにかしらのファイルからということもあるということでしょうか・・・?
guest

回答1

0

C++

1#include <iostream> 2#include <string> 3#include <thread> 4using namespace std; 5 6bool keyin = false; 7 8void f(int n) 9{ 10 string s; 11 getline(cin, s); 12 keyin = true; 13} 14 15int main() 16{ 17 thread th(f, 1); 18 for (char c = 'a'; c <= 'z'; c++) { 19 if (keyin) { 20 cout << "key input detected\n"; 21 keyin = false; 22 } 23 cout << c << flush; 24 this_thread::sleep_for(chrono::milliseconds(500)); 25 } 26 th.join(); 27 cout << endl; 28}

コメントをお願いします。

投稿2021/01/01 03:10

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

influJr

2021/01/02 15:16

key input detectedとはどのような働きをしているのですか?
kazuma-s

2021/01/02 15:30

"key input detected\n" は文字列リテラルですから動きません。 cout << "key input detected\n" で、文字列を標準出力に出力しています。 回答のコードは動かしてみたのですか? キー入力がないときは、abc... と表示していますが、 Enterキーが入力されると、if (keyin) で分岐して "key input detected\n" の文字列を表示しています。
lehshell

2021/01/03 11:09

keyin 変数は複数のスレッドからアクセスしていますから #include <mutex> std::mutex m; m.lock();とm.unlock();で同期処理が必要でしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問