C++
VisualStudioCode
ubuntu16.04

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

この記事について

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にコマンドを打たないと(新規ファイルを作る場合)上のエラーが出るため多少の面倒臭さは残った。
この面倒臭さの解消法はあると思うのですが、疲れたのでこの辺で...