对于大于1000个字符的字符串输入,执行挂起

时间:2012-03-30 19:19:22

标签: c++ string input

代码挂起的字符串输入大于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出错了。它在服务器上运行良好

1 个答案:

答案 0 :(得分:-2)

如果您将Unicode输入传递给此,缓冲区将溢出&amp;你会崩溃。

已编辑添加:

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

要对此进行测试,请将缓冲区设置为输入(p[2001], q[2001])的两倍。

但是使用静态缓冲区这是错误的方法string是正确的方法:上限类似于2 ^ 32个字符。