wstring



  • Hallo ,

    ich habe leider noch ein Problem mit dem wstring.

    wstring::iterator iter; 
        for ( iter = p_sText.begin(); iter != p_sText.end(); ++iter ){ 
        switch( *iter ) { 
            case '>' : { sReturnValue << "&gt;"; break; } 
            case '<' : { sReturnValue << "&lt;"; break; } 
            case '"' : { sReturnValue << "&quot;"; break; } 
            case '&' : { sReturnValue << "&amp;"; break; } 
            default  : { 
    	  if( *iter == *L"'" ) sReturnValue.append( L"&apos;" );
    	  else sReturnValue.append(  L( *iter ) ) ; 
    	  break;
            }
    

    Diese Zeile "produziert" einen Fehler 😞

    else sReturnValue.append(  L( *iter ) ) ;
    

    Und zwar: L Bezeichner nicht gefunden.

    Danke im voraus.

    Viele Grüße ,
    Elke



  • Hallo

    das L must du nur bei String-Literalen schreiben. *iter ist kein String-Literal.

    bis bald
    akari



  • Das hier

    if( *iter == *L"'" )
    

    sollte doch auch so aussehen

    if( *iter == L"'" )
    


  • Und außerdem solltest du anstelle des "if(*iter==*L"'")..." lieber das Hochkomma in deine case-Liste aufnehmen als "case L'\'': sReturnValue << L"'"; break;"

    (btw, was für einen Typ hat denn sReturnValue?)



  • ohne L geht es auch nicht 😞

    else sReturnValue.append(   *iter  ) ;
    

    Viele Grüße,
    Elke



  • (btw, was für einen Typ hat denn sReturnValue?)

    [/quote]

    Als wstring .



  • Zu deinem Problem: string hat zwar append(char*) und append(int,char), aber einzelne Zeichen kannst du per push_back(char) anhängen:

    //Möglichkeit 1:
    sReturnValue.append(1,*iter);
    
    //Möglichkeit 2:
    sReturnValue.push_back(*iter);
    
    //Möglichkeit 3:
    sReturnValue += *iter;
    

    Elke100 schrieb:

    Als wstring .

    Und da funktionieren die << Konstrukte im switch-Block?



  • Uff ... vielen Dank, jetzt funktioniert es. 🙂

    Danke.

    Vile Grüße , Elke


Log in to reply