cin.Get带有转义字符

cin.get with escape character

本文关键字:转义字符 Get cin      更新时间:2023-10-16

我使用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方面可以使其更容易集成到多个程序中。如果您确实希望在许多程序中使用这种特定的转换,那么将其打包到一个面中可能是有意义的。如果您不太可能在其他程序中使用它(正如我在这里所猜测的那样),那么可能不值得为麻烦。