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&)。
 
- 
啊,是的,抱歉。我从来不知道!谢谢。