У меня есть быстрый вопрос о C++. Я делаю текстовую игру, и я хочу, чтобы игрок мог ввести "Score"
и он напечатает текущую оценку (int score = 50
). Я использую if(Choice == 3)
для чисел, но я хочу иметь возможность вводить слова во входные данные.
Может ли кто-нибудь помочь?
Спасибо за прочтение.
std::string input;
cin >> input;
// lowercase it, for case-insensitive comparison
std::transform(input.begin(), input.end(), input.begin(), std::tolower);
if (input == "score")
std::cout << "Score is: " << score << std::endl;
Пытаться:
std::string userInput;
// Takes a string input from cin and stores in userInput variable
getline(std::cin, userInput);
// Check if user input is "Score"
if (userInput.compare("Score") == 0)
{
std::cout << "Score = " << score << std::endl;
}
Если пользовательский ввод "Оценка", то сравнение будет точным совпадением, а userInput.compare() вернет 0, поэтому мы проверяем, равен ли он его нулю.
Бит трудно догадаться, что именно вы пытаетесь сделать, но в целом, если вы хотите сравнить строки, вы используете процедуры сравнения строк. Например
#include <iostream>
int main(void) {
std::string choice;
std::cout<<"Please enter your choice:"<<std::endl;
std::cin>>choice;
if (choice.compare("score")==0) {
std::cout << "score!" << std::endl;
}
else {
std::cout << "fail!" << std::endl;
}
}
Если вы используете boost, вы можете делать нечувствительность к регистру. Или вы можете вводить ввод во все строчные буквы. Google "нечувствительная к регистру строка сравнения c++" для получения дополнительной информации.
Используйте std::getline
чтобы прочитать полную строку в строке, а затем просто сравните строку с ==
.
Есть много других способов сделать это, но любое решение, не основанное на std::getline
, вероятно, бесполезно сложно.