Так много вещей, чтобы сказать ... почему вы пишете << "\n" << "\n"
?? Вы можете просто поместить всю строку в один кусок, << "\n\n"
... в любом случае.
Для ввода / вывода, просто придерживайтесь iostreams, и не смешивайте и не сочетайте функции библиотеки C без уважительной причины. Возможно, так:
std::string name;
int id;
std::cout << "Please enter your name: ";
std::getline(std::cin, name);
std::cout << "Please enter the ID: ";
std::cin >> id; // see below
Может быть этот ответ вам пригодится. Операции ввода должны быть проверены на наличие ошибок, если вы хотите написать серьезный код.
Обратите внимание, что извлечение токена (>>
) читает слово за словом, поэтому std::cin >> name
будет читать только одно слово. Для чего-то вроде имени мы предпочитаем getline()
по этой причине.
Если вы запускаете вашу программу из командной строки, вам не понадобятся все эти system("pause")
вызовы, либо ...
Обновление: Как правило, не рекомендуется смешивать извлечение токенов (>>
) с чтением строк (getline()
), поскольку первое не сожрает новые строки, а второе - нет. Лучше всего придерживаться только одного из двух, в зависимости от того, что больше подходит для формата ввода.
Если вы используете только чтение строк, вам все равно придется обрабатывать каждую строку, возможно, снова путем извлечения токена. Для этого вам нужен поток строк . Включите <sstream>
и замените последнюю строку на:
std::string line; // you can put this at the top with the other declarations
std::getline(std::cin, line);
std::istringstream iss(line);
iss >> id;