在 C 中使用输入流时,通常使用 'cin' 读取用户输入。默认情况下,“cin”将空白字符视为分隔符,分隔单词或标记。如果您需要使用不同的分隔符怎么办?
虽然 C 标准库 API 没有明确提供更改“cin”分隔符的方法,但可以使用“std::”来实现此目的ios_base::imbue' 函数。
'std::ios_base::imbue' 允许您向输入添加自定义 'ctype' 方面 溪流。 Ctype 分面定义给定语言环境的字符分类行为。
以下示例演示了如何将分隔符更改为冒号(':')字符:
#include <locale> #include <iostream> struct colon_is_space : std::ctype<char> { colon_is_space() : std::ctype<char>(get_table()) {} static mask const* get_table() { static mask rc[table_size]; rc[':'] = std::ctype_base::space; rc['\n'] = std::ctype_base::space; return &rc[0]; } }; int main() { using std::string; using std::cin; using std::locale; cin.imbue(locale(cin.getloc(), new colon_is_space)); string word; while(cin >> word) { std::cout << word << "\n"; } }
在此示例中,创建了一个自定义“ctype”构面“colon_is_space”。此方面将冒号 (':') 和换行符 ('n') 字符分类为空格。
通过使用此自定义方面向输入流注入语言环境,我们有效地将 'cin' 的分隔符更改为冒号。因此,当使用提取运算符 (>>) 读取输入时,它将把冒号视为分隔符。
此技术可用于处理使用非空白字符作为分隔符的输入格式.
以上是如何更改 C 中'cin”输入的分隔符?的详细内容。更多信息请关注PHP中文网其他相关文章!