I次の文字列があります。のstd ::文字列の文字参照
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の代わりに2つの値 "\ x0d \ x0a"を取得します。
さらに興味深いのは、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 :: stringは "\ x0d \ x0a"を1文字と見なすことができるため、文字列の1つの位置だけを占有することはできますか?この '\ x0d'はstd :: stringに関して「謎の」文字ですか?
ADDITIONAL INFO:http://en.wikipedia.org/wiki/Newline
を読み取るためのhttp://www.cplusplus.com/reference/string/string/string/あなたは小さな、完全な、コンパイルプログラムでこれを示していることはできますか?私はインデックス5にアクセスするときに2文字をどのように取得するのか分かりません。 '[] '演算子は結局、1つの' char'を返します。 – sbi
は\ x0改行ですか?これらは単一の文字として扱われて、改行スタイルが異なるシステム上で同じ行数の索引を保持するようにすることができますが、std :: stringの内部動作については実際には分かりませんが、私は答えとして投稿しません。 –
私は引き続きこの質問に情報を追加します。確かにあなたの感心は正しいかもしれません: '\ x0a'は改行で、std :: stringはそれらを '\ x0d \ x0a'のように扱います。 – citn