c++ - do while循环和getline的问题-c ++
问题描述
我在这部分遇到困难,每当我解决一个问题时,似乎总会有另一个不同的问题。最初的问题是,每当我输入 Y 或 y 循环整个内容时,它都会跳过第一个输入,即Enter your name:
并转到Enter your address:
. 为了阻止这种情况,我尝试将其放在cin >> name
上面getline(cin,name)
,但它确实引入了一个新问题,它将替换字符串的第一个单词。有没有办法解决第一个输入的跳过和第一个单词的替换问题?
do {
cout << "Day: " << days << "\n\n";
days++;
cout << "Enter your name: " << endl;
cin >> name;
cin.ignore();
getline(cin, name);
data.setName(name);
cout << data.getName() << "\n" << endl;
cout << "Enter your address: " << endl;
cin >> address;
cin.ignore();
getline(cin, address);
data.setAddress(address);
cout << data.getAddress() << "\n" << endl;
cout << "Enter your email: " << endl;
cin >> email;
cin.ignore();
getline(cin, email);
data.setEmail(email);
cout << data.getEmail() << "\n" << endl;
cout << "Press Y/y to continue to enter customer data. Otherwise press N/n to go to next day" << endl;
cin >> c;
cout << "\n" << endl;
} while ((c == 'Y' || c == 'y'));
return 0;
};
例如,如果我输入ab c d
名称,我得到的输出只会输出c d
. 因此,虽然它很有帮助,但并没有解决它跳过第一个单词的问题。我想要的输出是它显示输入的字符串,在这个例子中它会显示ab c d
。
解决方案
推荐阅读
- javascript - 找出 DOM 中的哪个框架发起了 postMessage(在 IE11 中)
- c - 将不同类型的指针分配给现有内存
- sql - 选择一个字段具有最大值的行,按另一个字段分组
- java - 将重复的 if-else 语句修改为更简洁的代码
- spring-boot - 有没有办法在 K8S 服务发现中为服务注册自定义元数据?
- oauth-2.0 - 使用 Auth0 的应用程序必须遵循哪些 OIDC 标准?
- database-design - Dynamodb 表设计:嵌套查询支持
- java - 如何调试仅记录来自 spring-framework 类的特定语句?
- java - 迁移到 Wildfly 后,无法提交具有大量输入字段的表单
- java - Logstash JDBC 输入插件执行失败并出现错误:第 9 行第 60 列应为 #、{、} 之一