2014-02-07 3 views
0

Я писал код на C++, чтобы практиковать выполнение функций, и я столкнулся с проблемой наличия массива строк, где я хотел бы определить определенные элементы в одной функции, а затем вывести эти элементы в другую функцию. Пока что я сделал код для входной части. Когда я запускаю программу, она перестает отвечать на запросы, когда она запрашивает имя игрока во второй раз. У меня есть массив, p[1], определенный как std::string, потому что в противном случае я получаю сообщение об ошибке при попытке запустить getline(cin, p[x]). Любые сведения о том, почему программа перестает работать и как создать массив, который я хочу?Глобальный массив строк в C++

Мой код:

#include <stdio.h> 
#include "simpio.h" 
#include "strlib.h" 
#include "iostream.h" 

int Hp[1], Atk[1], Ddg[1]; 
std::string p[1]; 

void player(int x){ 
    cout<<"Player name: "; 
    getline(cin, p[x]); 
    cout<<"\tHp: "; 
    cin>>Hp[x]; 
    cout<<"\tAtk: "; 
    cin>>Atk[x]; 
    cout<<"\tDdg: "; 
    cin>>Ddg[x]; 
    } 

main(){ 
    string go; 

    player(0); 
    player(1); 

    cout<<"Go? (Yes/No): "; 
    cin>>go; 
    cin.get(); 

} 
+4

для того, чтобы массив иметь индекс 1, он должен иметь размер по крайней мере, 2. – Brian

ответ

1

Вы должны изменить

std::string p[1]; 

в

std::string p[2]; // have size=2 (at least) so you can access p[1] later 
+0

, если я использую p [2], будут ли мои элементы {p [0], p [1]} или {p [1], p [2]}? – SkippyNBS

+2

@ i5a1ah первый индекс равен 0, second = 1 и так далее ... – alexolut

+0

Thanks; вот что я подумал, но я не был уверен – SkippyNBS

Смежные вопросы