使用时:
string s;
cin >> s;
哪些字符可以包含字符串以及哪些字符会将读取停止为字符串。
答案 0 :(得分:9)
std::ctype_base::space
是std::istream
的分隔符,它会停止从源中读取更多字符。
std::ctype_base::space
指的是空格和换行符。这意味着,s
在使用cin>>s
阅读时可以包含除空格和换行符之外的任何字符。
如果你想阅读包含空格的完整行,那么你可以使用getline()
函数,它使用换行符作为分隔符。还存在其重载函数,如果要提供自己的分隔符,可以使用它。 See it's documentation for further detail
您还可以使用自定义区域设置,您可以将其设置为std::istream
。您的自定义区域设置可以定义一组字符,以便std::istream
将其视为分隔符。你可以在这里看到一个这样的例子(见我的解决方案):
答案 1 :(得分:3)
分隔符是ch
返回true的任何字符std::isspace( ch,
std::sin.getlocale() )
。换句话说,无论如何
充满感染的地方认为是“白色空间”。 (虽然我愿意
考虑到它有点滥用,我知道程序员要创建
特殊区域设置,例如,
白色空间,并使用
>>
读取以逗号分隔的列表。)