У меня есть домашнее задание, с которым у меня проблемы. У меня, похоже, нет ошибок, но когда я запускаю программу и ввод текста... ничего не происходит.
Например, чтобы проверить это, я обычно помещаю в "Робертсон, Боб Джон" и нажимаю enter. Кто-нибудь может мне с этим помочь?
#include <iostream>
#include <string>
using namespace std;
int main () {
//Title and instructions
cout << "This program will output your name in first-to-last order!" << endl;
cout << "Please type your name in the following manner: last, first middle."; << endl;
//Declare the strings being used
string firstName;
string middleName;
string lastName;
//Put user input into strings, ignore the comma
cin >> lastName >> firstName >> middleName >> endl;
cin.ignore(',');
//Output the name in first-to-last order
cout << "Your name is: " << first <<' '<< middle <<' '<< last << endl;
//Pause before exiting
return 0;
}
Во-первых, у вас есть пара ошибок компиляции; добавочную точку с запятой на вашем втором cout
, неправильные имена переменных, когда вы пытаетесь cout
вывод и т.д. Но реальной проблемой является ваш cin.ignore(',');
, Похоже, что он висит по какой-то причине. Я собираюсь угадать, основываясь на документации по cin, что он интерпретирует запятую как число, и он будет игнорировать многие символы.
Вам нужно будет удалить запятую самостоятельно после cin
; Я оставил это как упражнение для вас.
#include <iostream>
#include <string>
using namespace std;
int main () {
//Title and instructions
cout << "This program will output your name in first-to-last order!" << endl;
cout << "Please type your name in the following manner: last, first middle." << endl;
//Declare the strings being used
string firstName;
string middleName;
string lastName;
//Put user input into strings, ignore the comma
cin >> lastName >> firstName >> middleName;
//Output the name in first-to-last order
cout << "Your name is: " << firstName <<' '<< middleName <<' '<< lastName << endl;
//Pause before exiting
return 0;
}
Поскольку вы говорите, что он компилируется, предположительно, ваш реальный код не имеет изгоев ;
во второй строке cout
, не пытается читать в endl
и использует правильные имена переменных в окончательном cout
.
Предполагая, что нет других отличий, проблема заключается в следующем:
cin.ignore(',');
Я не уверен, что вы хотите, чтобы это сделать; но он ждет, пока вы не введете дополнительные 44 символа (интерпретируя ',' как его значение ASCII 44) после имени перед продолжением.
Если вы хотите игнорировать запятую после фамилии, это, вероятно, проще всего прочитать с запятой, а затем удалить ее с помощью lastName.pop_back()
(возможно, проверить, что там действительно есть запятая).
Кстати, у моего отца нет среднего имени, а у моей сестры два. Не разрешено ли вам использовать вашу программу?
//Pause before exiting return 0;
- это не пауза, а код возврата .