web-dev-qa-db-ja.com

Visual Studio Code:ユーザーからの入力を取る

現在、Visual StudioコードでC/C++プログラムを記述しようとしています。このために、2つの拡張機能をインストールしました: C/C++C++ Intellisense

ドキュメントによると、デバッグ機能はWindowsでは使用できません。次のタスクでコードをビルドして実行できました。

{
    "version": "0.1.0",
    "command": "cmd",
    "isShellCommand": true,
    "args": [
        "/C"
    ],
    "tasks": [
        {
            "taskName": "Makefile",
            "suppressTaskName": true,
            // Make this the default build command.
            "isBuildCommand": true,
            // Show the output window only if unrecognized errors occur.
            "showOutput": "always",
            // No args
            "args": [
                "C:/Programs/cygwin/bin/make.exe",
                "all"
            ],
            // Use the standard less compilation problem matcher.
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "${workspaceRoot}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "taskName": "Run",
            "suppressTaskName": true,
            "isTestCommand": true,
            "args": [
                "helloworld"
            ]
        }
    ]
}

と1つの単純なMakefile

all: clean helloworld

helloworld: helloworld.cpp
    C:/Programs/cygwin/bin/g++ helloworld.cpp -o helloworld

clean:
    C:/Programs/cygwin/bin/rm -rf helloworld

しかし、プログラムの実行中にユーザー入力が必要になると、問題が発生します。この非常に使い慣れたhelloworldプログラムについて考えてみましょう。

# include <iostream>

using namespace std;

int main ()
{
  int name;

  cin >> name;

  cout << "Hello, " << name << "!!!" << endl;

  return 0;
}

実行時にユーザー入力を取得するのを手伝ってくれませんか。入力をコマンドライン引数として渡す回避策があります。しかし、これは複雑なフローを持つプログラムでは不可能です。

11
Arnab Das

[ファイル]> [設定]-> [ユーザー設定]に移動し、カスタム設定を追加します。

{
   "code-runner.runInTerminal": true
}

最後にc ++コードを実行すると、コンソールに値を入力できるようになります

13
kaxi1993

私と同じ問題が発生した場合、integratedTerminalは以下のようにユーザーからの入力を読み取ることができません。hanging(env。windows 10) enter image description here

私の解決策は、cygwinのgdbとg ++をmingw64で置き換えることでした。

その後、入出力は正常です enter image description here

0
傅继晗

追加の利便性として、コメントからの入力を統合ターミナルに提供することもできます。

例:

# include <iostream>
using namespace std;
int main ()
{
  int name;
  cin >> name;
  cout << "Hello, " << name << "!!!" << endl;
  return 0;
}
/*input
123
*/

拡張リンク-
コメント入力: https://marketplace.visualstudio.com/items?itemName=virresh.cinp

注:この拡張機能は code-runner に依存しています。これは、ほぼすべての言語のスクリプトを実行できる別の拡張機能です(カスタムビルドオプションも指定できます)。

免責事項:私はこの拡張機能の作成者です

0
c0deManiac