Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Strings verbinden ...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]
000
19.05.2005, 14:21 Uhr
BartS



Hallo,

ich würde gerne mehrere Strings verbinden ... eigentlich eine klassisch einfach Aufgabe.

Nur leider geht es nicht:


Code:

string s1 = "aaa";
string s2 = "bbb";

string s3 = s1 + " " + s2;



Als Fehler wird der "binäre Operator +" bemängelt.

Hat jemand eine Idee, warum das nicht geht, bzw. wie ich die Strings einfach und simpel zusammenbekomme?

Habt vielen Dank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.05.2005, 14:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


vielleicht

C++:
#include <string>


vergessen?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.05.2005, 11:25 Uhr
~BartS
Gast


Ja genau ... dümmster aller Fehler ... danke :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.05.2005, 12:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Ja genau ... dümmster aller Fehler ... danke :-)


hehe das ist eigentlich ne gute Idee für ne Umfrage...

also dümmster und argerlichster Fehler ist imho in der Art


C++:
if(x=4711)....


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.05.2005, 12:12 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


oder


C++:
void main(...



--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.05.2005, 12:16 Uhr
0xdeadbeef
Gott
(Operator)


Neee. Der dümmste aller Fehler ist, mit dem MSVC++ 6.0 zu arbeiten.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.05.2005, 12:31 Uhr
Lumina



Tja, ich hab auch ein oder eher mehrere Stringprobleme.
Hab eine Klasse, die einen Zeiger auf einen Stringanfang und einen int-Wert für die Länge des Strings enthält. Diese Klasse heißt CString bei mir.

Nun wollt ich eine Funktion schreiben, die mir aus meinem aktuellen CString-Objekt alle vorkommenden Leerzeichen entfernt. Dazu hab ich mir erst eine Funktion geschrieben, die einen char* nimmt und das ganze mit dem macht:


C++:
void CString::removeSpaces(char* str) {
    char* tmp = new char[strlen(str)+1];

    for(; *str; str++) {

        if (*str != ' ') {
        
            *tmp = *str;
            tmp++;        
        }

    }
    *tmp = 0;  // Nullterminierung setzen

    // Ergebnis zuweisen:
    delete [] str;
    str = tmp;
}



Das liefert mir aber nur eine Debug Assertion. Hab das ganze auch schon über indizes probiert, aber die Variante mit den Zeigern wäre mir an sich lieber. Anscheinend kann irgendwas nicht richtig vom Konstruktor freigegeben werden, da hatte ich schon mal sowas.
aber ich würde gern sehen, wie jemand anderes das angeht...

Bitte helft mir.
Danke.
--
*******************************************
Willst du glücklich sein im Leben, trage bei zu and'rer Glück,
denn die Freude, die wir geben, kehrt ins eig'ne Herz zurück!
*******************************************

Dieser Post wurde am 25.05.2005 um 12:32 Uhr von Lumina editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.05.2005, 12:36 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wenn du c++ (und new und delete sind definitiv c++) benutzt dann nimm std::strings und allokier nicht mit chars rum...

zum anderen zeigt tmp dir auf den allokierten speicher... du solltest also an dem pointer nicht rumfummeln so lange das dein einziger zeiger ist mit dem du den allokierten speicher wieder freigeben kannst... funktionieren kann str = tmp; am ende ja nicht weil tmp ja schon aufs ende zeigt. ausserdem übergibst du char* str was ja call by value ist. also exestiert str nach dem durchlaufen der funktion nicht mehr...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.05.2005, 12:44 Uhr
Lumina



Hi Windalf,

ich will aber das für meine Prüfung üben, da gibt es als Vorlage eben diese Klasse CString. Alle Stringfunktionen sollen da selber geschrieben werden, also auch strlen, strcmp, strcat,...

Und jetzt will ich eben eine Funktion, die mir die Leerzeichen aus einer Zeichenkette löscht. Wie würdest es denn du machen?!
--
*******************************************
Willst du glücklich sein im Leben, trage bei zu and'rer Glück,
denn die Freude, die wir geben, kehrt ins eig'ne Herz zurück!
*******************************************
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
25.05.2005, 12:55 Uhr
Lumina



Du hast mich aber trotzdem weiter gebracht. Ich nimm einfach gleich das Member str des aktuellen Objekts... dann gehts:


C++:
void CString::removeSpaces() {
    
    char* tmp = new char[strlen(str)+1];
    char* tmp_start = tmp;
    char* str_start = str;

    for(; *str; str++) {

        if (*str != ' ') {            
            *tmp = *str;
            tmp++;            
        }

    }
    *tmp = 0;  // Nullterminierung setzen

    // Auf Anfänge zurücksetzen, wegen Destruktor:
    tmp = tmp_start;
    str = str_start;

    delete [] this->str;
    str = tmp;  // neuen String zuweisen
}



Die nächste Aufgabe, die ich mir vorgestellt hab, geht schwieriger, aber da hab ich noch nix selber gemacht... kann leicht sein, dass ich bald wieder da bin...

Danke für die Hinweise!
--
*******************************************
Willst du glücklich sein im Leben, trage bei zu and'rer Glück,
denn die Freude, die wir geben, kehrt ins eig'ne Herz zurück!
*******************************************
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: