一个让在 UVa 写题目更方便的 VSCode 设置

2 min

前面的碎碎念

最近我在练习老古董网站 UVa https://onlinejudge.org

这个网站已经古老到:

_

编译选项只支持 C、Java、C++ 以及 Pascal,其中唯一的解释型语言甚至用的是相对过时的 Python 3.5.1。

而且甚至有一个历史遗留参数 -lcrypt,它在现在的 MinGW1 上是找不到的。

DeepSeek 给出的解释:

——
——

现在 UVa OJ 还叫做 UVa OJ,uHunt 更像是 UVa 使用的一个社交平台。

所以,因为我使用的 GNU Compiler Collection 版本是 15.2.0,就需要在 VSCode 中自己设置一下编译选项。

开始配置 ⚙️

之前简要地写过一篇 blog 记录用 VSCode 写 C++。

https://re.karlbaey.top/articles/to-let-your-vs-code-support-cpp/

我们仍然是在 Code Runner 这一插件中做手脚,如下所示。

// 原文中的配置
{
  "code-runner.executorMap": {
    "cpp": "cd /d $dir && g++ -fexec-charset=GBK $fileName -o $fileNameWithoutExt && .\\$fileNameWithoutExt.exe"
    // 其余省略
  }
}

现在把它改成这样:

{
  "cpp": "cd /d $dir\ng++ -std=c++11 -O2 $fileName -o rel.exe\n.\\rel.exe < input.txt > output.txt"
}

这里其实是执行了 3 条命令。

cd /d $dir
g++ -lm -O2 -std=c++11 -pipe -DONLINE_JUDGE $fileName -o rel.exe
.\rel.exe < input.txt > output.txt
  1. 进入文件所带目录(顺便更换盘符)。
  2. 使用 UVa 提供的参数编译文件。
  3. 将标准输入调整为文件 input.txt,标准输出调整为文件 output.txt

只要在源代码所在的目录新建一个文件 input.txt,然后把测试样例写进去,这样 VSCode 就会自动测试好并把结果存进 output.txt 中了2

UVa_490_-_Rotating_Sentences 试试看。

_

接着在写好的 UVa_490_-_Rotating_Sentences.cpp 文件窗口内按下 Ctrl +

_

什么都没有发生。打开 output.txt 看看。

_

太多就不一一展示了。

这样就算配置好了。上面提供的 Code Runner 配置亲测可用,可以直接粘贴到 settings.json 里。


喜报:过了!

_

Footnotes

  1. 我的主力系统是 Windows 11,无法避免使用 MinGW。

  2. 没有 output.txt 的话,会自动创建一个。