一个让在 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- 进入文件所带目录(顺便更换盘符)。
- 使用 UVa 提供的参数编译文件。
- 将标准输入调整为文件
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 里。
喜报:过了!

