Я пытаюсь заставить пользователя ввести некоторые данные, а затем сохранить их в структуре, однако у меня возникают проблемы, зная, какую функцию я должен использовать, и какая разница? cin или getline()? Любая функция, которую я использую, кажется, что она берет ключ «\ n» и заставляет мою программу сбой, но я не 100%, если это проблема ... Так как она продолжает сбой.C++ пропускает новый ключевой ключ?
Я играл с ними обоими, и вот что у меня есть.
string temp;
int id;
cout << endl << "Full name (last, first): ";
cin >> temp;
cin.ignore(1, '\n');
myData[fileSize] = parseName(temp);
cout << endl << "ID: ";
cin >> id;
myData[fileSize].id = id;
cout << endl << "Address: ";
cin >> temp;
temp.copy(myData[fileSize].address, temp.length(), 0);
Переменная FileSize просто какой элемент массива находится в настоящее время, а функция ParseName разделяет имя в последний и первый.
Я читал несколько функций, таких как cin.ignore() и noskipws, но не знал, как их использовать. Кстати, способ ввода данных пользователем «последний, первый» с запятой и пробелом после (это то, что ищет функция синтаксического анализа).
Также я не уверен, является ли адресная область лучшим способом для этого, у меня есть структура myData.address как массив символов, потому что я не знаю, как работать со строками. Я все еще не уверен в C++. Спасибо за любую помощь.
EDIT: если я прокомментирую части идентификатора и адреса, программа проведет 6-ти циклов, указав, что у меня есть недопустимая запись (которая является частью основного), поэтому она читает 6 или 7 клавиш после нажатия кнопки ввода. Если я оставлю все так, как есть, это то, что я получаю.
Full name (last, first): terminate called after throwing an instance of 'std::ou
t_of_range'
what(): basic_string::copy
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Process returned 3 (0x3) execution time : 4.328 s
Press any key to continue.
Что происходит, когда он падает? Сделайте это [MCVE] (http://stackoverflow.com/help/mcve), пожалуйста. – ryanpattison
Откуда вы знаете, что он рушится из-за переходов? Вы тестировали парсинг и все остальное? Попробуйте изолировать свои проблемы. На мой взгляд, у вас есть 3 места, которые могут взорваться. Также есть руководство, как написать «Почему мой код не работает». – luk32
Убедитесь, что на вашем адресе достаточно места для хранения адреса, который вы пытаетесь скопировать на него. – user2970916