我有以下字符串:的std :: string的字符引用
index 0 1 2 3 4 5 6 7
std::string myString with the content of "\xff\xff\xff\x00\xff\x0d\x0a\xf5"
當我指的myString的[3],我得到預期的 '\ x00的' 價值。
但是當我指的是myString [5]時,我得到兩個值「\ x0d \ x0a」而不是'\ x0d'。
更有趣的是myString [6]值,它是'\ xf5'。這一次就好像\ x0d不存在,並且引用了正確的位置。
我的問題是:std:string對象中的\ x0d字符有什麼特別之處?索引時如何跳過它?這就像這樣計算:
index 0 1 2 3 4 5 5 6
std::string myString = "\xff\xff\xff\x00\xff\x0d\x0a\xf5"
爲註釋,以「\ X0D」字符是第13個ASCII字符「回車」和「\ X0A」是換行符。
更新:它可以是std ::字符串認爲「\ x0d \ x0a」作爲單個字符,因此只佔用字符串中的一個位置?這個'\ x0d'是關於std :: string的「神祕」字符嗎?
附加信息:http://en.wikipedia.org/wiki/Newline
您可以顯示這一個小的,完整的,可編譯程序見http://www.cplusplus.com/reference/string/string/string/?我不明白在訪問索引5時如何得到兩個字符。畢竟,'[]'運算符只返回一個'char'。 – sbi 2009-09-02 08:11:56
是\ x0a換行符?這些可能被視爲一個單一的字符,以使「換行符」在具有不同換行符樣式的系統上保持相同數量的索引(一個),儘管我真的不確定std :: string的內部工作方式,所以我不會將其作爲答案發布。 – 2009-09-02 08:12:44
我會繼續向這個問題添加更多信息。事實上,你的預感可能是對的:'\ x0a'是一個換行符,似乎std :: string將它們當作一個字符:'\ x0d \ x0a'。 – citn 2009-09-02 08:24:29