使用时:
string s;
cin >> s;
字符串可以包含哪些字符,哪些字符会停止读取字符串。
使用时:
string s;
cin >> s;
字符串可以包含哪些字符,哪些字符会停止读取字符串。
std::ctype_base::space
是 std::istream
中用于分隔符的,它使得读取源中的更多字符停止。
std::ctype_base::space
指的是空格和换行符。也就是说,当使用 cin>>s
读取时,s
可以包含除空格和换行符以外的任何字符。
如果你想要读取包含空格的完整行,那么可以使用 getline()
函数,该函数使用换行符作为分隔符。此外,还存在其重载函数,如果您想提供自己的分隔符,则可以使用它。有关详细信息,请参阅其文档。
您还可以使用自定义的区域设置(locale),并将其设置为 std::istream
。您的自定义区域设置可以定义一组在 std::istream
中被视为分隔符的字符。您可以在这里看到一个示例(请参见我的解决方案):
ch
,其返回值为true的函数std::isspace(ch, std::sin.getlocale())
。换句话说,它是被注入区域认为是“空格”的任何字符。(虽然我认为这有点滥用,但我知道程序员会创建特殊的区域,将例如,
视为空格,并使用>>
读取逗号分隔的列表。)file >> number
会忽略非数字字符,例如简单的英语句子吗? - Nawaz
std::ctype_base::space
是一个枚举类型,并且是一个掩码值,它只能作为std::ctype<>::is
的参数使用。而这又取决于imbued locale,理论上可以做任何事情。 - James Kanze