簡體   English   中英

帶有轉義字符的cin.get

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM