使用ostream operator <<打印字符串时,为什么空白不充当定界符?

| 我知道编写诸如
std::cin >> some_var;
这样的代码(其中some_var是字符串变量)时,只有输入的第一个单词会存储在
some_var
中。但是我不明白为什么
std::cout << \"something here\";
不仅输出\“ something \\”。我想念什么吗?     
已邀请:
        当使用
cin >> some_var
读取输入时,默认情况下定界符为空格(尽管可以更改),而在打印时,
cout
会一直打印直到找到字符串末尾的
\\0
。 如果您想阅读直到它在输入流中找到ѭ5,,那么您必须编写以下代码:
std::getline(std::cin, some_var, \'\\0\');
您可以将任何其他字符作为定界符作为
std::getline
函数的第三个参数。 请注意,有一个成员函数名称为“ 9”,与上面使用的成员函数略有不同,后者是一个免费的独立函数。 比较: std :: getline-免费的独立功能。重载功能也是可用的。 istream :: getline-
std::istream
的成员函数 我用了第一个。     
        
cin
读入
string
时在空白处终止被认为是有用的。但是,在打印字符串时仅打印第一个单词并没有用。 毕竟,您说出要打印出“这里有东西”·在另一种情况下,您只是说了从ѭ11中读了一些东西。在单词之间,一行之间以及在stdin的整个内容之间(直到收到EOF)的选择是任意的,并且设计恰好是读取一个单词。这样可以很容易地快速读取\“ john 10 2.15 \”这样的记录行(首先读入字符串,然后读入int,然后读入float)。用
std::getline
将整行读为
string
。     
        因为当您从
std::cin
接受输入时,它需要知道何时停止接受输入。如果它没有停止在第一个单词处,它将在何时停止?但是,当您输出一个变量时,答案很容易-您输出那个变量。     
        是的。
cin
停在一个空格处,因为默认情况下,它认为您想要一个单词。
cout
没有遵循相同的限制,因为,为什么呢?仔细考虑一下-如果打印出“ Hello,world!”实际上只是打印出“ Hello,\”,那有什么意义吗?当然,这没有任何意义。开发人员知道他们想要输出什么(至少,我们希望:D)。     
        我认为他们遵守了惯例。在“ 19”的情况下,很明显,您指定了要写入的内容。在20英镑的情况下,他们必须决定在哪里停下来。新队?也许这是最自然的选择,但他们只是决定停止在某个空间阅读。     
        
cin
cout
的定界符不同。对于
cin
,在行尾将空格分隔为输入,对于ѭ4input。但是,您可以更改这些默认定界符。     

要回复问题请先登录注册