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。
鬼知道因为这个我调了多久。。。