3

使用时:

string s;
cin >> s;

字符串可以包含哪些字符,哪些字符将停止读取字符串。

4

2 回答 2

10

std::ctype_base::spacestd::istream是使它停止从源中读取更多字符的分隔符。

std::ctype_base::space指的是空格和换行符。这意味着,s在阅读时可以包含除空格和换行符之外的任何字符cin>>s

如果您还想阅读包含空格的完整行,那么您可以使用getline()使用换行符作为分隔符的函数。还有它的重载函数,如果你想提供你自己的分隔符,你可以使用它。有关更多详细信息,请参阅它的文档


您还可以使用可以设置为的自定义语言环境std::istream。您的自定义语言环境可以定义一组字符作为分隔符,由std::istream. 你可以在这里看到一个这样的例子(见我的解决方案):

将 std::string 拆分为 vector<string> 的正确方法

于 2011-05-23T08:32:58.813 回答
3

ch分隔符是std::isspace( ch, std::sin.getlocale() )返回 true的任何字符。换句话说,无论被灌输的语言环境认为“空白”是什么。(虽然我认为这有点滥用,但我知道程序员会创建特殊的语言环境,例如考虑,空格,并用于 >>读取逗号分隔的列表。)

于 2011-05-23T09:01:16.490 回答