Ваш for
цикл выходит за пределы. Вам нужно использовать <
вместо <=
:
for(vector<string>::size_type x = 0; x < st.first_name.size(); ++x) {
cout << st.first_name[x] << " ";
}
Как говорится, std::vector<std::string>
не имеет смысла для first_name
. std::vector<char>
будет иметь больше смысла (как вы делаете для last_name
), хотя было бы НАМНОГО лучше использовать std::string
вместо:
struct Student {
int age,standard;
//char first_name[51],last_name[51];
string first_name, last_name;
};
int main() {
Student st;
string k;
cin >> st.age;// >> st.last_name >> st.standard;
getline(cin, k);
st.first_name = k;
cout << st.age << " " << endl;// << st.first_name << " ";// << st.last_name << " " << st.standard;
cout << "\t" << st.first_name << endl;
}
Или, поскольку вы используете std::getline()
для чтения целого имени, даже не разделяйте first_name
и last_name
вообще:
struct Student {
int age,standard;
//char first_name[51],last_name[51];
string name;
};
int main() {
Student st;
string k;
cin >> st.age;// >> st.last_name >> st.standard;
getline(cin, k);
st.name = k;
cout << st.age << " " << endl;// << st.first_name << " ";// << st.last_name << " " << st.standard;
cout << "\t" << st.name << endl;
}