字符串输入超过1000个字符时执行挂起

Execution hangs for string input greater than 1000 characters

本文关键字:执行 挂起 字符 1000个 输入 字符串      更新时间:2023-10-16

字符串输入超过1000个字符时代码挂起
P&Q是小写英文字母。

    #include<iostream>
    #include<vector>
    using namespace std;
    int main(){
    // 1st example
    string p,q;
    cin >> p >> q;
    // 2nd example
    char p[1500],q[1500];
    scanf("%s",p);
    cin >> q ; 
    return 0;
   }

对于少于1000个字符的字符串,两者都运行良好
这两个备选示例都是为大于1000个字符的字符串中断的
我只需要一种方法来输入最多1500个字符的字符串

编辑:原来XCode有故障。它在服务器上运行良好

如果将Unicode输入传递给它,缓冲区将溢出&你会崩溃的。

编辑后添加:

如果你幸运的话。请注意,小写英文Unicode字符仍然是,每个字符两个字节。如果你的输入来自一个文件,你无法通过查看它是否是Unicode来判断,你需要在十六进制编辑器中打开它来确定。

要测试这一点,请将缓冲区设置为输入(p[2001], q[2001])的两倍大。

但是使用静态缓冲区是错误的方法,string是正确的方法:上限大约是2^32个字符。