powershell <6 是啥子命令行

· · 休闲·娱乐

你是一位使用 Linux 环境的算法竞赛选手,但很不幸你的电脑爆掉了,你只能使用机房电脑的 Windows。为了追求尽量相似的代码风格,你选择了 powershell 作为终端命令行。

考虑以下代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    freopen("data.in","r",stdin);
    int a;long long b;
    cin>>a>>b;
    cout<<a<<" "<<b<<"\n";
    return 0;
}

如此简明扼要的程序,一定不会出错吧!于是你造了一个数据生成器并生成了内容为 1 1 的 data.in。运行代码,查看结果:

0 16

???

无论是 Win7 自带的 PowerShell 2.0,还是 Win10/11 自带的 PowerShell 5.1,它们的 > 重定向运算符,输出的文件格式是 UTF-16 LE 而非 UTF-8,而 C++ 的输入处理的是 char 字节序列,是无法直接处理 UTF-16 LE 编码的文件的。

从 PowerShell 6.0 开始,文本输出变为 UTF-8。

鬼知道因为这个我调了多久。。。