关于 c :有没有办法使用 cin 在同一行上分配多个字符串? | 珊瑚贝

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;
    string lastname;

    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/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?