c++ - ".exe has stopped working"当我尝试计算字符串时

标签 c++ string struct

我似乎无法运行代码。如果有人能解释为什么会发生这种情况,我将不胜感激。

#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

struct Jugador{
     int codigo;
     string nombre;
     float tiempo;
     int tamano;
     int cuad_magico[][3];
   };

int main()
{
    const int N=7;
    Jugador Jugadores[N];
    string J[N]={"HUGO","PACO","LUIS","DONALD","PLUTO","MICKEY","GOOFY"};

    Jugadores[0].nombre = J[0];
    Jugadores[1].nombre = J[1];
    Jugadores[2].nombre = J[2];
    Jugadores[3].nombre = J[3];
    Jugadores[4].nombre = J[4];
    Jugadores[5].nombre = J[5];
    Jugadores[6].nombre = J[6];

    Jugadores[0].codigo=0;
    Jugadores[0].tamano=3;
    Jugadores[0].tiempo=3.5;
    Jugadores[0].cuad_magico[0][0]=4;
    Jugadores[0].cuad_magico[0][1]=9;
    Jugadores[0].cuad_magico[0][2]=2;
    Jugadores[0].cuad_magico[1][0]=3;
    Jugadores[0].cuad_magico[1][1]=5;
    Jugadores[0].cuad_magico[1][2]=7;
    Jugadores[0].cuad_magico[2][0]=8;
    Jugadores[0].cuad_magico[2][1]=1;
    Jugadores[0].cuad_magico[2][2]=6;

    Jugadores[1].codigo=1;
    Jugadores[1].tamano=3;
    Jugadores[1].tiempo=6.2;
    Jugadores[1].cuad_magico[0][0]=8;
    Jugadores[1].cuad_magico[0][1]=3;
    Jugadores[1].cuad_magico[0][2]=4;
    Jugadores[1].cuad_magico[1][0]=1;
    Jugadores[1].cuad_magico[1][1]=5;
    Jugadores[1].cuad_magico[1][2]=9;
    Jugadores[1].cuad_magico[2][0]=6;
    Jugadores[1].cuad_magico[2][1]=7;
    Jugadores[1].cuad_magico[2][2]=2;

    Jugadores[2].codigo=2;
    Jugadores[2].tamano=3;
    Jugadores[2].tiempo=4.3;
    Jugadores[2].cuad_magico[0][0]=2;
    Jugadores[2].cuad_magico[0][1]=9;
    Jugadores[2].cuad_magico[0][2]=4;
    Jugadores[2].cuad_magico[1][0]=7;
    Jugadores[2].cuad_magico[1][1]=5;
    Jugadores[2].cuad_magico[1][2]=3;
    Jugadores[2].cuad_magico[2][0]=6;
    Jugadores[2].cuad_magico[2][1]=1;
    Jugadores[2].cuad_magico[2][2]=8;

卡在这里,我做错了什么吗?

    cout <<  Jugadores[1].nombre  << endl;
}

最佳答案

int cuad_magico[][3];

这不会为 cuad_magico 分配数组。您仅定义了一个指向 3 个整数的数组的指针。从阅读你的代码来看,你似乎想说:

int cuad_magico[3][3];

如果没有这个,当您编写 Jugadores[1].cuad_magico[2][2]=2 或类似操作时,您会出现未定义的行为,因为数组未分配。

p.s.:既然你可以使用 STL(因为你使用 string),为什么不使用 std::vector 呢?使用 STL 数组和 vector 比原生 C 样式数组要好得多。

关于c++ - ".exe has stopped working"当我尝试计算字符串时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33597039/

相关文章:

c++ - G++/C++无法链接库

c++ - 如何在 win32 可执行文件中嵌入任何 *.jpg 图像并在运行时使用它

c++ - 使用 Visual Studio 2013 编译 FFTW 3.3.4

Java String - 如何制作将字符串添加到字符串中的函数?

perl - 在 Win32 Perl 中使用 XML::Twig 字符串损坏和不可打印字符

c - 在 C 中导航结构数组

c++ - constexpr 静态结构类成员的冲突声明

c - 取消引用指向结构成员的不完整类型错误的指针

c++ - 有什么方法可以为函数指定一个通用参数,并限制它应该实现给定的接口(interface)

C 比较数组元素与字符串