问题描述
使用c++写算法题时,测试用例是一个长字符串(上万字符), 但运行结果显示字符串读入的长度远远小于输入长度。并且不同操作系统下面显示出了不同的bug:
- macos: 输入字符串长度只有1000+,超过这个长度成都就会卡在cin那行代码。
- ubuntu18.04: 程序不报错,读入字符串长度为4095, 超过这个长度的字符都被’\000’替代。
- windows: 读入字符串长度4094, 并报段错误。
解决
- 操作系统的终端对单行输入流大小有限制,通常为1kb-4kb,也就解释了上面的bug出现原因。(太坑了有木有,超出限制竟然也没有报错!!!!)
- 如果需要输入长文本内容,把测试用例写在文本文件中,使用重定向输入:
./a.out < input.txt