" .exe已停止工作"当我尝试小提一个字符串

时间:2015-11-08 17:49:31

标签: 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;
}

2 个答案:

答案 0 :(得分:1)

  

int cuad_magico [] [3];

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

int cuad_magico[3][3];

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

p.s。:因为你被允许使用stl(bc你使用string),为什么不使用std::vector?使用stl数组和向量比使用本机C风格的数组要好得多。

答案 1 :(得分:1)

struct Jugador{
     int codigo;
     string nombre;
     float tiempo;
     int tamano;
     int cuad_magico[3][3];
//___________________^

   };