cin.Get带有转义字符
cin.get with escape character
我使用cin.get( input, c )
的代码,其中c
是分隔符字符。它在极少数情况下会失败,因为有另一个字符e用作转义。因此,如果c
跟随e,我希望cin.get
转到下一个c
,而不是转义的c
。
我目前正在检查cin.get
的最后一个字符是否为e,如果是,则追加另一个cin.get
。是否有一种方法可以添加转义字符到cin.get
,所以我不需要额外的转义字符检查?
如果您想要这样的行为,您需要自己实现它。这不是内置到cin.get
。
至少在理论上,iostreams库确实提供了一个可以合理插入这种逻辑的地方,因此它将充当流的一部分。具体来说,iostream有一个相关的locale
,并使用区域设置的codecvt
方面从文件中字符的外部表示转换为程序将看到的字符的内部表示。可以在自定义的codecvt
facet中执行此转换。
这有一个相当重要的问题——写一个codecvt
面是相当痛苦的。试图将此转换编写为编解码方面,而不是在阅读后进行工作,这就像是将代码量大致增加了一倍,并且至少增加了三倍的难度。
投资可以得到回报——将转换打包到codecvt
方面可以使其更容易集成到多个程序中。如果您确实希望在许多程序中使用这种特定的转换,那么将其打包到一个面中可能是有意义的。如果您不太可能在其他程序中使用它(正如我在这里所猜测的那样),那么可能不值得为麻烦。
相关文章:
- 为什么当我从 cin 阅读时转义字符不起作用?
- 在QLineEdit中显示和编辑转义字符
- std::regex_error语言 - 意外的转义字符
- LPCWSTR 查找和替换为转义字符
- 修改正则表达式以包含反斜杠和单引号(以便反斜杠表现为转义字符)
- 有人可以解释一下与 Windows 文件系统相关的C++转义字符" "吗?
- 将带有转义字符的大字符串转换为字节数组
- 由转义字符组成的字符串文字的大小
- XOR错误的结果,转义字符
- 在字符串行中查找转义字符
- 以十进制、八进制和十六进制表示法标识整数文本是否与转义字符中的整数文本相同
- C++转义字符和引用变量输出混淆
- 定义 std::字符串 C++不带转义字符
- 正在读取(?)转义字符
- 如何提供转义字符作为命令行参数
- 打印不带转义字符的字符串
- Linux中的转义字符不起作用
- 关于转义字符的帮助
- cin.Get带有转义字符
- 如何在spirit::lex标记中去掉转义字符