Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Stringwahn

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 <
000
09.12.2003, 17:00 Uhr
~icke
Gast


Kann man in diesem Code die Variable "text" irgendwie "verlängern" und auch wieder verkürzen?
An "text" soll also ein neuer char hinzugefügt werden wenn sich der Text verlängert? Kann man die chars auch wieder wegnehmen? ... also einzelne chars löschen ? Und kann man einen char mitten im text hinzufügen löschen?


C++:
#include <string.h>
#include <stdio.h>

int main()
{
    char *text;
    text = new char[5];
    strcpy(text,"TEST");

    printf("%s",text);
    printf("\n");
    printf("\nsizeof(text): %i",sizeof(text));
    printf("\nstrlen(text): %i",strlen(text));

    delete []progname;
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.12.2003, 17:03 Uhr
~icke
Gast


ups am ende muss es
C++:
delete []text;
heißen ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.12.2003, 17:09 Uhr
0xdeadbeef
Gott
(Operator)


In C++ würde ich einfach string benutzen:

C++:
#include <string>
#include <iostream>

int main() {
  std::string text;

  text = "TEST";
  std::cout << text << std::endl
            << "sizeof(text): "      << sizeof(text)  << std::endl
            << "Länge des Strings: " << text.length() << std::endl;

  text += " 1 2 3";
  std::cout << text << std::endl
            << "sizeof(text): "      << sizeof(text)  << std::endl
            << "Länge des Strings: " << text.length() << std::endl;
  return 0;
}


Allerdings gibt sizeof(text) nicht die Menge des angeforderten Speichers zurück, sondern die Größe des Variablentyps.

In C mit malloc, calloc, realloc und free.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 09.12.2003 um 17:14 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.12.2003, 09:19 Uhr
~icke
Gast


Geht das auch ohne std? und so nebenbei: wieso kann ich den 'text' nicht per
C++:
printf("%s",text);
ausgeben? (bringt zwar 0 Fehler / Warnungen beim compilieren aber schmiert ab)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.12.2003, 10:18 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
~icke postete
Geht das auch ohne std?


Ja, nach den Includes "using namspace std;" einfügen.


Zitat:
~icke postete
und so nebenbei: wieso kann ich den 'text' nicht per
C++:
printf("%s",text);
ausgeben? (bringt zwar 0 Fehler / Warnungen beim compilieren aber schmiert ab)

Weil test ein String Object ist, %s im printf baér ein char* erwartet (Also einen ANSI C String, was awas anderes ist als ein Stringobject).

C++:
printf("%s\n", text.c_str());


sollte helfen, allerdings ist die cout Variante vorzuziehen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: