带有转义字符的cin.get

时间:2013-05-21 14:20:14

标签: c++ cin

我使用cin.get( input, c )代码,其中c是分隔符。它在极少数情况下失败,因为还有另一个角色被用作逃脱。因此,如果c跟随e,我希望cin.get转到下一个c,而不是转发的c

我目前正在检查来自cin.get的最后一个字符是否为e,如果是,则追加另一个cin.get。有没有办法将转义字符添加到cin.get,所以我不需要额外检查转义字符?

1 个答案:

答案 0 :(得分:3)

如果您想要这样的行为,您需要自己实施。它没有内置到cin.get

至少在理论上,iostreams库确实提供了一个插入这种逻辑的合理位置,因此它将像流的一部分一样。具体来说,iostream具有关联的locale,并使用区域设置的codecvt构面将文件中字符的外部表示转换为字符的内部表示,因为它们将被程序看到。您可以在自定义codecvt方面进行此转化。

这有一个相当重要的问题 - 编写一个codecvt方面是相当痛苦的。尝试将此转换编写为codecvt方面,而不是在读取后执行该工作,这样可以使代码量大致翻倍,并且至少使所涉及的难度增加三倍。

投资可以获得回报 - 将转换打包成codecvt方面可以使其更容易集成到多个程序中。如果你真的希望在许多程序中使用这种特定的转换,那么将它打包成一个方面可能是有意义的。如果(我猜这里就是这种情况)你不太可能在其他程序中使用它,那么可能不值得这么麻烦。