我使用cin.get( input, c )
代码,其中c
是分隔符。它在极少数情况下失败,因为还有另一个角色被用作逃脱。因此,如果c
跟随e,我希望cin.get
转到下一个c
,而不是转发的c
。
我目前正在检查来自cin.get
的最后一个字符是否为e,如果是,则追加另一个cin.get
。有没有办法将转义字符添加到cin.get
,所以我不需要额外检查转义字符?
答案 0 :(得分:3)
如果您想要这样的行为,您需要自己实施。它没有内置到cin.get
。
至少在理论上,iostreams库确实提供了一个插入这种逻辑的合理位置,因此它将像流的一部分一样。具体来说,iostream具有关联的locale
,并使用区域设置的codecvt
构面将文件中字符的外部表示转换为字符的内部表示,因为它们将被程序看到。您可以在自定义codecvt
方面进行此转化。
这有一个相当重要的问题 - 编写一个codecvt
方面是相当痛苦的。尝试将此转换编写为codecvt方面,而不是在读取后执行该工作,这样可以使代码量大致翻倍,并且至少使所涉及的难度增加三倍。
投资可以获得回报 - 将转换打包成codecvt
方面可以使其更容易集成到多个程序中。如果你真的希望在许多程序中使用这种特定的转换,那么将它打包成一个方面可能是有意义的。如果(我猜这里就是这种情况)你不太可能在其他程序中使用它,那么可能不值得这么麻烦。