LoginSignup
6
2

More than 5 years have passed since last update.

VisualStudioCode上でc++の標準入出力(素人)

Last updated at Posted at 2017-12-18

この記事について

vscodeで競プロ環境を整えようと思い、拡張機能であるRunnerを使ってvscode上で入出力をできるようにしました。
備忘録として書いておきます.

注意

・素人による記事なので信用しないで下さい。
・間違っている可能性がありますので騙されないようにして下さい。

実行環境

Ubuntu16.04LTS(デュアルブート上)
VisualStudioCode 1.19.0

準備

・vscodeのインストール
・C/C++,Runnerの拡張機能のインストール
・g++のインストール

Hello World

普通に実行する場合

Ctrl + Shift + Bを押す
ビルドタスクの構成→tasks.jsonの作成
もう一度Ctrl+Shift+Bを押せばoutファイルが作成される
そして実行

ここでtasks.jsonは自分の環境に合った内容を書き込む。
C++の場合は以下のソースコードとなる。一応公式サイト貼っておく。

tasks.json
{
    "version": "0.1.0",
    "command": "g++",
    "isShellCommand": true,
    "showOutput": "always",
    "args": ["-g", "main.cpp"]
}

公式

しかし、こんな面倒なことは毎回したくない!
ということで、本題へ

C++の標準入力

Runnerを使えばVscode上で出力可能になる。
今回はinput.txtから入力される値を渡して出力させる。

まずはshファイルを作成

cppio.sh
#!/bin/sh
chmod a+x /home/username/Documents/cppio.sh
g++ -o out $1
./out < /home/username/Documents/mytask/input.txt
rm out

そこからユーザー設定に以下を上書き

~/.config/Code/User/settings.json
{
    "runner.languageMap": {
        "cpp": "/home/username/Documents/cppio.sh"
    }
}

以上が終われば後は
ctrl+shift+Rでinput.txtを読み込み結果が出力される。

はずだったがエラーが出てきた。

/bin/sh: /home/username/Documents/cppio.sh: Permission denied
Exited with status 126

以下のページで解決策を見つけた
https://qiita.com/dockurage/items/49e7295e7ff7458e26cd
それをTerminalに打ち込んで無事出力完了した。
が…
わざわざterminalにコマンドを打たないと(新規ファイルを作る場合)上のエラーが出るため多少の面倒臭さは残った。
この面倒臭さの解消法はあると思うのですが、疲れたのでこの辺で...

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2