Is there any way to assign multiple strings on the same line using cin?
我刚刚开始学习 C,我已经进行了一些谷歌搜索,但似乎无法找到可靠的答案。
无论如何都可以使用 cin.
在同一行输入多个字符串变量
例如,假设您希望某人在同一行输入名字和姓氏,然后将它们分配给变量名和姓氏。
除了多行并提示他们两次之外,你会如何做到这一点?
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <string>
#include <iostream> using namespace std; int main(){ string firstname; cout <<“Please enter your first name: \ cin >> firstname; cout <<“Please enter your last name: \ cin >> lastname; cout <<“Your full name is :” << firstname <<“”<< lastname; return 0; } |
- std::cin >> firstname >> lastname;?
- 您不应该使用 std::cin 来接受来自标准输入的字符串。请改用 std::getline。
- @Ron 为什么不呢?对我来说似乎是教条。
- @Ron 为什么?我的意思是特别是如果 OP 希望用户可以在一行中输入名字和姓氏。
- 注意:在一行中阅读它可能会模棱两可,因为理论上名字或姓氏可以由多个单词组成。
- @Ron 这就是 OP 想要的 Firstname Lastname。 std::getline 将如何解决那里的问题?
- @Ron 确实有一点:例如路德维希·范·贝多芬。
- @Bathsheba 是的,但这不是 std::cin 与 std::getline 而是 OP 希望在一行中阅读它的一般问题。而 std::getline 也无济于事。
有可能:
1
2 3 4 5 |
std::string firstname, lastname;
std::cout <<“Please enter your full name:\ “; std::cin >> firstname >> lastname; std::cout <<“Your full name is :” << firstname << ‘ ‘ << lastname; |
由于 std::cin 的 operator>> 返回对 std::cin 的引用,因此可以将其链接在一起,就像 std::cout.
- 谢谢!虽然现在我有点困惑。使用 getline 提到的一些评论。这样做有什么好处吗?
- @BlueTeam 如果名字或姓氏可能是多个单词,则使用 std::getline 更合理。这是因为对于像 “Ludwig van Beethoven” 这样的名字,std::cin 会将 “Ludwig” 读作名字,将 “van” 读作姓氏。如果你确定这样的事情不会发生,std::cin 是完全可以接受的。
- 感谢您的详细解释,它真的很有帮助!
- @BlueTeam 请接受答案。
假设你只想使用cin函数,你应该试试; cin >> firstname >> lastname 并提示用户以这种格式输入他/她的姓名:”john smith”, “jane smith”,因为空格会导致 cin 函数将其完全接受为不同的输入,从而使程序输入名字,然后输入姓氏。
抱歉,有任何语法问题。
编辑:我应该提到我的意思是引号内的格式,如输入名字、空格、姓氏。
- std::cin 不是函数。它是一个对象。 std::cin >> firstname; 调用函数 operator<<(istream&, std::string&)。
- 啊,是的,抱歉。我从来不知道!谢谢。
来源:https://www.codenong.com/57808512/