2012-06-01 99 views
0

我正在編寫一個C++程序來解決消息解碼的常見問題。部分問題需要我得到一堆隨機字符,包括'\',並將它們映射到一個鍵。C++ - 在字符串上轉義或禁用反斜槓

我的程序在大多數情況下工作正常,除了當我從字符串中讀取'\'等字符時,我顯然會得到完全不同的字符表示(例如'\ 0'會產生空字符或'\'當它需要被視爲一個角色時簡單地逃脫)。

由於我不應該對包含哪些字符鍵有任何控制,所以我一直在拼命想找到一種方法來將特殊控制字符(如反斜槓)當作字符本身來處理。

我的問題是,這些基本上都是:

  • 有沒有辦法把所有特殊字符了我的計劃範圍之內?

  • 有沒有辦法來覆蓋特殊字符的當前有向圖定義並將它們定義爲別的東西(如使用非常罕見的鍵的二元圖)?

  • 在String類中有一些我不知道的方法,它可以強制讀取字符串上的實際字符而不是預定義的常量嗎?

我一直在尋找一個解決方案,現在幾個小時,但我發現所有可能的修復其他語言。

任何幫助是非常感謝。

+2

「\」是特殊的*只在一個字符串/字符中**文字*** - 不是外部數據讀入:它具有*沒有固有含義*作爲字符串對象的內容!可以使用'@「\ verbatim \ string \」'文字(並且char文字''\\''是一個簡單的例子),但是這隻會影響源文件中出現的* literal *值。 (這並不排除外部數據源中「\」的特殊含義,而且在某些來源中,例如在Regexp中,仍然有意義)。 – 2012-06-01 21:57:31

+0

您的字符串從哪裏來?它是否被硬編碼?用戶輸入?文件IO? – Linuxios

+0

「_我明顯得到了完全不同的角色表現_」對你來說這可能很明顯,但我不知道這意味着什麼。當你讀到一個角色時,你會得到一個角色,具體的問題是什麼? –

回答

2

如果您從stdin或文件中讀取類似"\0"的字符串,它將被視爲兩個單獨的字符:'\\''0'。沒有額外的處理,你必須做。

轉義字符僅用於字符串/字符文字。也就是說,當你想將某些東西硬編碼到源代碼中。