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