0 terminate String kopieren

Rodney

Mitglied
Hallo Leute,
wie kann ich einen \0 terminate String in einen anderen String gleichen Typs konvertieren, also zuweisen?

-MFG, Rodney
 
danke das funtioniert jetzt.
Irgendwie komme ich aber mit strings in c++ nicht so recht klar...:(

Wie kann ich mehrere Strings zussammenfügen
Und wie kann ich diesen string dann ausgeben mit folgender Funtion?
SendMessage(hwnded,WM_SETTEXT,0,(long)STRING);

Also ich habe 2 Strings und möchte diese in einen endstring mit folgendem Aufbau bringen:
String1 - String2

DANKE IM VORRAUS
 
Hoi!
Na in diesem Beispiel einfach:

Code:
char cString1[40]="Toll"
char cString2[40]="Super";
char EndString[85];

strcpy(EndString,cString1);
strcat(EndString, " - ");
strcat(EndString,cString2);

printf("Ergebnis: %s", EndString);

Das strcpy kopiert einen string in einen anderen, das strcat hängt hinten an.
Aber wenn du das in C++ lösen möchtest empfehle ich dir aus der STL den
std::string zu verwenden. Da ist das alles komfortabler.

Gruß, Christian
 
Ich muss dazu sagen, dass ich selber auch noch nicht so lange C++ programmier.

Mehrere Strings kannst du mit strcat aneinander hängen.

Meine Theorie wäre folgende:
Code:
char sBasis[] = "Der String ist vorne";
char sMid[]   = " - ";
char sEnd[]   = "String am Ende";

char sNew[sizeof(sBasis) + sizeof(sMid) + sizeof(sEnd) + 1];

strcat(sNew, sBasis);
strcat(sNew, sMid);
strcat(sNew, sEnd);
wie du diesen String dann der SendMessage-Funktion übergibst, kann ich dir leider nicht sagen, weil ich nicht weis, was der Parameter für einen Typ hat.

ps: wenn ich dir einen Tipp geben darf: Fang nicht mit Windows-Programmierung an!
Lern lieber ANSI C, bzw C++, da hast du glaub ich für den Anfang mehr davon.

Edit: ok, ich hab den Code jetzt getestet, er scheint zu funktionieren.
Nur scheint es, als ob vor dem sNew String noch ein paar Leerzeichen eingefügt werden.
Aber vielleicht kann dir da ja jemand anders helfen :)
 
Zuletzt bearbeitet von einem Moderator:
mit welcher Funktion kann man denn die leerzeilen am ende eines strings entfernen? Sonst wird ja noch so ein komisches Zeichen ausgegeben

also

sneuString[] = chop(alterString);

so würde die funktion in php heißen...
 
Die PHP-Funktion "chop" (entfernt Leerzeichen, Tabulatoren und Zeilenvorschübe am String-Ende) gibt es in C/C++ nicht, soweit ich weiß...

Ich würde den String rückwärts von letzter Stelle anfangen zu lesen und vergleichen, ob das enthaltene Zeichen ein Leerzeichen, Tabulator oder Zeilenvorschub ist. Wenn ja muß an diese Stelle ein \0 um den String an der Stelle zu terminieren...
 
Ich will ja nicht nörgeln, aber was hat ein zero-terminated string mit C++ zu tun? Soweit ich mich erinnern kann, benutzen C++-Programmierer den vorhandenen Sprachschatz, um Strings zu repräsentieren:
Code:
#include <string>
#include <iostream>

void dump( const std::string& str ) {
  std::cout << "\"" << str << "\"" << std::endl;
}

int main( int argc, char* argv[] ) {

  // std::string objekt erstellen und initialisieren
  std::string str( "ach" ); dump( str );

  // strings anhägnen
  str += "so"; dump( str );
  str += "     "; dump( str );

  // white-spaces am ende löschen
  str.erase( str.find_last_not_of( ' ' ) + 1 );
  dump( str );

  // und raus mit error code 0
  return 0;
}
Sollte man für einen WinAPI-Aufruf mal einen C-String benötigen, geht das mit std::string::c_str().

.f
 
Zurück