[英]cin.get with escape character
我有使用cin.get( input, c )
代碼cin.get( input, c )
其中c
是分隔符。 它在極少數情況下失敗,因為還有另一個角色被用作逃脫。 所以,如果c
跟隨e,我希望cin.get
轉到下一個c
,而不是轉義c
。
我目前正在檢查cin.get
的最后一個字符是否為e,如果是,則追加另一個cin.get
。 有沒有辦法將轉義字符添加到cin.get
所以我不需要額外檢查轉義字符?
如果你想要這樣的行為,你需要自己實現它。 它沒有內置到cin.get
。
至少在理論上,iostreams庫確實提供了一個插入這種邏輯的合理位置,因此它將作為流的一部分。 具體來說,iostream具有關聯的locale
,並使用語言環境的codecvt
facet將文件中字符的外部表示轉換為字符的內部表示,因為它們將被程序看到。 您可以在自定義codecvt
方面執行此轉換。
這有一個相當重要的問題 - 編寫一個codecvt
方面是相當痛苦的。 嘗試將此轉換編寫為codecvt facet而不是在讀取后執行該工作,這樣可以使代碼量大致翻倍,並且至少使所涉及的難度增加三倍。
這種投資可以獲得回報 - 將轉換打包成codecvt
可以使其更容易集成到多個程序中。 如果你真的希望在許多程序中使用這種特定的轉換,那么將它打包成一個方面可能是有意義的。 如果(我猜這里是這種情況)你不太可能在其他程序中使用它,它可能不值得麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.