将数组字符串作为输入时出错

时间:2015-04-04 17:39:19

标签: c++ arrays string scanf

我正在尝试将字符串数组作为输入,但它给出了运行时错误

    #include<iostream>
    #include<cstdio>
    #include<string>
    using namespace std;

    int main()
    {
        string str[500];
        int n;
        cin>>n;
        for(int i=0;i<n;i++)
            scanf("%s",&str[i]); \\works fine with cin but gives error using scanf
        return 0;
    }
  
    

处理终止,状态为-1073741510(0分钟,10秒(秒))

         
      

cin一起正常使用,但如果我使用scanf

则会出错     
         

有人可以告诉我为什么会出现这样的错误

         
      

该错误意味着什么       为什么在使用cin

时它不会出错     
  
     

我正在使用代码块13.12

3 个答案:

答案 0 :(得分:0)

string是C ++类型,您应该使用C ++ I / O cincout。如果您真的想使用C I / O,可以使用c_str方法获取char *后面的C string

答案 1 :(得分:0)

scanf()旨在与C风格的字符串(又名char *char[])一起使用,它应该是

char myString[101];
char* myOtherString = (char*)malloc(101);
scanf("%100s", myString);
scanf("%100s", myOtherString);
free(myOtherString);

没有理由在std::string上使用它。

答案 2 :(得分:0)

您正在使用C ++来利用cin 头文件避免使用非空指针和char数组

CIN&GT;&GT;有运算符重载和用户现代字符串类