C++ std::ifstream 读取字符串分隔符

发布于 2024-11-09 17:43:16 字数 100 浏览 1 评论 0原文

使用时:

string s;
cin >> s;

字符串可以包含哪些字符以及哪些字符将停止对字符串的读取。

When using:

string s;
cin >> s;

Which characters can string contain and which characters will stop the reading to string.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

帅的被狗咬 2024-11-16 17:43:16

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

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

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


您还可以使用自定义的区域设置,将其设置为std::istream。您的自定义区域设置可以定义一组由 std::istream 视为分隔符的字符。您可以在这里看到一个这样的示例(请参阅我的解决方案):

对将 std::string 拆分为向量的方法

std::ctype_base::space is the delimiter for std::istream which makes it stop reading further character from the source.

std::ctype_base::space refers to whitespace and newline. That means, s can contain any character except whitespace and newline, when reading using cin>>s.

If you want to read complete line containing whitespaces as well, then you can use getline() function which uses newline as delimiter. There also exists its overloaded function, which you can use if you want to provide your own delimiter. See it's documentation for further detail.


You can also use customized locale which you can set to std::istream. Your customized locale can define a set of characters to be treated as delimiter by std::istream. You can see one such example here (see my solution):

Right way to split an std::string into a vector<string>

半葬歌 2024-11-16 17:43:16

分隔符是任意字符 ch,其中 std::isspace( ch,
std::sin.getlocale() )
返回 true。换句话说,无论
充满的语言环境考虑“空白”。 (虽然我会
认为这有些滥用,我知道程序员会创建
特殊的语言环境,考虑例如 , 空白,并使用
>> 读取逗号分隔的列表。)

The delimiter is any character ch for which std::isspace( ch,
std::sin.getlocale() )
returns true. In other words, whatever
the imbued locale considers "white space". (Although I would
consider it somewhat abuse, I've known programmers to create
special locales, which consider e.g. , white space, and use
>> to read a comma separated list.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文