[英]How can I replicate compile time hex string interpretation at run time!? c++
在我的代碼中,以下行為我提供了執行任務的數據:
const char *key = "\xf1`\xf8\a\\\x9cT\x82z\x18\x5\xb9\xbc\x80\xca\x15";
問題是它在編譯時根據我不完全理解的規則進行了轉換。 “\x”在字符串中如何工作?
我想要做的是獲得相同的結果,但來自與運行時輸入的字符串完全相同的字符串。 我已經嘗試了很多事情並尋找答案,但沒有一個足夠匹配以至於我無法申請。
我知道 \x 表示一個十六進制數。 但我不知道編譯器 (gcc) 以哪種形式“烘烤”了它。
那`翻譯成什么?
"\a" 是否做類似 "\x" 的事情?
這確實是由編譯器提供的,但這部分不是標准庫的成員。 這意味着您有 3 種方法:
popen
可用)從您的主程序執行它並讀取它的輸入。 是不是很丑。。。如果直到這里還不清楚,我強烈建議您使用第三種方式;-)
如果您想翻譯在運行時作為輸入獲得的字符串中的“轉義”代碼,那么您需要自己明確地進行。
一種方法是將輸入讀入一個字符串。 然后將源字符串中的字符一個一個地復制到新的目標字符串中。 如果你看到一個反斜杠然后你丟棄它,獲取下一個字符,如果它是一個x
你可以使用例如std::stoi
將接下來的幾個字符轉換成它對應的 integer 值,和 append 這個數字到目標字符串(或者使用std::to_string
添加它,或使用 output 字符串流和正常的“輸出”運算符<<
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.