web-dev-qa-db-fra.com

Code Visual Studio: prendre l'entrée de l'utilisateur

Actuellement, j'essaie d'écrire un programme C/C++ dans du code Visual Studio. Pour cela, j'ai installé deux extensions: C/C++ & C++ Intellisense

Selon la documentation, la fonction de débogage n'est pas disponible pour Windows. J'ai pu créer et exécuter le code avec les tâches suivantes:

{
    "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"
            ]
        }
    ]
}

et un simple Makefile:

all: clean helloworld

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

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

Mais, le problème se pose, lorsque les programmes ont besoin d'une entrée utilisateur lors de l'exécution. Supposons pour ce programme helloworld très familier.

# include <iostream>

using namespace std;

int main ()
{
  int name;

  cin >> name;

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

  return 0;
}

Pouvez-vous m'aider à obtenir l'entrée utilisateur au moment de l'exécution. Il existe une solution pour passer l'entrée en tant qu'arguments de ligne de commande. Mais cela n'est pas possible pour les programmes avec des flux complexes.

11
Arnab Das

Accédez à Fichier> Préférences -> Paramètres utilisateur et ajoutez des paramètres personnalisés:

{
   "code-runner.runInTerminal": true
}

Enfin, exécutez votre code c ++ et vous pourrez entrer des valeurs dans la console

13
kaxi1993

si vous rencontrez le même problème que moi que le terminal intégré ne peut pas lire l'entrée de l'utilisateur comme ci-dessous suspendu (env. windows 10) enter image description here

ma solution a été de remplacer gdb et g ++ de cygwin par mingw64 .

alors la sortie d'entrée est normale enter image description here

0
傅继晗

Pour plus de commodité, vous pouvez également fournir des entrées à partir d'un commentaire dans le terminal intégré.

Exemple:

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

Lien d'extension -
Entrée de commentaire: https://marketplace.visualstudio.com/items?itemName=virresh.cinp

Remarque: Cette extension dépend de code-runner , une autre extension qui peut exécuter des scripts pour presque toutes les langues (et vous pouvez également spécifier des options de construction personnalisées)

Avertissement: je suis l'auteur de cette extension

0
c0deManiac