Проблема ввода / вывода с простой программой.

0

У меня есть домашнее задание, с которым у меня проблемы. У меня, похоже, нет ошибок, но когда я запускаю программу и ввод текста... ничего не происходит.

Например, чтобы проверить это, я обычно помещаю в "Робертсон, Боб Джон" и нажимаю 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;

}
  • 2
    Этот код не компилируется. Если вам нужна наша помощь, покажите нам реальный код.
  • 3
    //Pause before exiting return 0; - это не пауза, а код возврата .
Теги:
input

2 ответа

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;

}
  • 0
    Ах, я скопировал старый код случайно. Спасибо за ответ, мне очень помогло. Буквально мое третье задание, ха-ха.
  • 0
    @ user3345181 Нет проблем. Мы все должны начать где-нибудь! ^ _ ^ Не забудьте принять мой ответ, поставив галочку рядом с ним, что даст нам обоим некоторую репутацию.
Показать ещё 1 комментарий
1

Поскольку вы говорите, что он компилируется, предположительно, ваш реальный код не имеет изгоев ; во второй строке cout, не пытается читать в endl и использует правильные имена переменных в окончательном cout.

Предполагая, что нет других отличий, проблема заключается в следующем:

cin.ignore(',');

Я не уверен, что вы хотите, чтобы это сделать; но он ждет, пока вы не введете дополнительные 44 символа (интерпретируя ',' как его значение ASCII 44) после имени перед продолжением.

Если вы хотите игнорировать запятую после фамилии, это, вероятно, проще всего прочитать с запятой, а затем удалить ее с помощью lastName.pop_back() (возможно, проверить, что там действительно есть запятая).

Кстати, у моего отца нет среднего имени, а у моей сестры два. Не разрешено ли вам использовать вашу программу?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню