C++新手求助:多输入多响应实现及变量未声明报错问题
解决C++字符串匹配报错及多输入响应实现
错误原因及修正点
- 字符串字面量未加引号:你代码里
if (firstname == leo)中的leo没有用双引号包裹,C++编译器会把它当作未声明的变量,这就是触发“name未在作用域中声明”错误的原因。必须改成"leo",让它成为合法的字符串字面量。 - 无意义的空字符串输出:
std::cin >> firstname;之前的std::cout << firstname;完全多余,此时firstname是空字符串,直接删掉即可。
带多输入响应的修正代码
#include <iostream> #include <string> int main() { std::string firstname; std::cout << "please state your name. \n"; std::cin >> firstname; if (firstname == "leo") { std::cout << "oh, you."; } else if (firstname == "alice") { std::cout << "Hello Alice, nice to meet you!"; } else if (firstname == "bob") { std::cout << "What's up Bob?"; } else { std::cout << "Hi there, " << firstname << "!"; } return 0; }
额外说明
- 如果需要处理带空格的全名(比如"Leo Smith"),不能用
std::cin >> firstname,因为它会在空格处停止读取,这时可以用std::getline(std::cin, firstname)。注意:如果getline前有cin输入,需要先加std::cin.ignore()处理掉残留的换行符。 std::string已经重载了==运算符,你直接用它做字符串比较的思路是对的,只是细节没处理到位。
内容的提问来源于stack exchange,提问作者LEOO37
相关产品推荐
相关产品推荐

