C++程序优化:如何支持全名输入并将年龄置于括号中?
问题解决:支持全名输入并调整输出格式
原代码的问题
cin >> name仅能读取单个单词,无法获取带空格的全名(如"Alex Whatmore")- 输出格式不匹配:缺少"Mr. "前缀、年龄未用括号包裹,且排版缺少必要空格
修改后的代码
#include <iostream> #include <string> using namespace std; int main() { string name; int age; cout << "What is your name?" << endl; getline(cin, name); // 读取包含空格的整行全名 cout << "What is your age?" << endl; cin >> age; cin.ignore(); // 清除输入缓冲区残留的换行符,避免后续输入异常 // 按照指定格式输出 cout << "Hello, Mr. " << name << " (" << age << ")! " << endl; return 0; }
修改说明
- 使用
getline(cin, name)替代cin >> name:该函数会读取输入的整行内容(直到换行符),完美支持带空格的全名输入 - 调整输出语句:手动拼接"Mr. "前缀,将年龄用
(和)包裹,并补充各部分之间的空格,确保输出与示例完全一致 - 添加
cin.ignore():由于cin >> age会在输入缓冲区留下换行符,若后续有getline操作会直接读取空行,该语句可提前清除这个残留字符,避免潜在问题
内容的提问来源于stack exchange,提问作者bobbyrodgers
相关产品推荐
相关产品推荐

