1

我有代码使用cin.get( input, c )wherec是分隔符。它在极少数情况下会失败,因为有另一个字符 e 用作转义。所以,如果c跟随 e,我想去cin.get下一个c,而不是逃跑的c

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

4

1 回答 1

3

如果你想要这样的行为,你需要自己实现它。它不是内置于 to 中的cin.get

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

不过,这有一个相当大的问题——写一个codecvt方面是相当痛苦的。试图将这种转换写成 codecvt 方面,而不是在阅读后进行这项工作,就像是代码量大致翻了一番,所涉及的难度至少增加了三倍。

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

于 2013-05-21T14:34:13.647 回答