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

使用C++写算法题时,长字符串输入在不同操作系统出现不同问题。macOS输入超1000+字符会卡在cin行,Ubuntu 18.04读入长度为4095,超量字符被替代,Windows读入4094并报段错误。原因是终端对单行输入流大小有限制,可将测试用例写在文本文件用重定向输入解决。
2977

被折叠的 条评论
为什么被折叠?



