2 に答える
CurToken.append(&*Pointer);
Pointer
がポインタであると仮定すると、これは次のようになります。
CurToken.append(Pointer);
文字列の末尾全体をに追加しますCurToken
(Cスタイルのゼロで終了する文字列を指していると仮定します。ターミネータがない場合は、何かが発生する可能性があります)。現在の文字を追加したいようです。
CurToken.append(*Pointer);
Pointer
更新:あなたはそれがであると言いますstd::string::iterator
。その場合&*Pointer
でも、は文字へのポインタです。それでも、append
Cスタイルの文字列へのポインタとして解釈されます。文字列内の文字は必ずしも終了しているわけではないため(実際には、特にC ++ 11ライブラリではほぼ確実に終了します)、未定義の動作が発生します。
CurToken
との型は何Pointer
ですか? CurToken
のように見えますstd::string
。ですか?Pointer
_ かなりの過負荷があります。それらの1つは次のとおりです。std::string*
append
string& append ( const string& str );
それをヒットしたい場合は、「&」を削除して、逆参照されたポインターだけを取得する必要があります。
CurToken.append(*Pointer);
それはうまくいくはずですが、文字だけでなく文字列全体を追加することに注意してください。そうでない場合は、おそらくどのオーバーロードがappend()
ヒットしているかを把握する必要があります。最初の文字のみが必要な場合は、次を試してください。
CurToken.append(1, (*Pointer)[0]);