char, string plus en anden string

Tags:    c++

<< < 12 > >>
Hey,
Er der nogen som kan forklare mig hvorfor jeg ikke kan gøre dette, og hvordan jeg kan fixe det:
Fold kodeboks ind/udKode 

Dette får jeg fra min compiler:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 27.04.2006 18:08 af Bruger #6791
13 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hvorfor en char pointer og ikke bare en string? Altså du kan jo ikke som sådan bruge en << operator på en primitiv type.



Der er generelt 2 måder, standard C eller standard C++.

C:
Fold kodeboks ind/udKode 


C++: (her skal du huske at tilføje #include <string> allerøverst i koden):
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 27.04.2006 18:50 af Bruger #3470
Nicolai:
For mig ser dit eksempel rimlig farligt ud, du definere en pointer, og begynder at skrive til den uden at have givet den et sted at pege hen... Så du skriver til et tilfældigt sted i rammene, eller er der noget jeg har misforstået ??



Man kan også bruge en stringstream:

Fold kodeboks ind/udKode 


Det kan være handy hvis man vil konverte int, double osv. til string's

stringstreams str() returnerer en std::string med indholdet af stream'en.



Nicolais eksemple er ganske rigtigt forkert.
Besked skal sættes til at pege på noget inden den bruges.
Eller man kan lave det med et array.
Men løsningen med string eller stringstream er imho bedre.



Bertel:
Kan man ikke typecaste en int til en string, eller er det C only ?



Jeg går ud fra at du med "string" mener en char * / 0-termineret streng?

Det kan man godt, men det giver ikke rigtig mening.

Hvis du har:
int x = 12345678;

Kan du godt:
char *p = (char *)&x;

Men p peger ikke på en streng.



Hehe, beklager, havde lidt travlt på det tidspunkt, så nåede ikke lige at læse det igennem en ekstra gang :P
Jeg skulle selvfølgelig have skrevet noget ala:
Fold kodeboks ind/udKode 


Men det var nu egentlig bare for at vise metoden i C, det ville nok være bedre at benytte std::string eller std::stringstream, hvis du har mulighed for det.



Der er generelt 2 måder, standard C eller standard C++.

C:
Fold kodeboks ind/udKode 


C++: (her skal du huske at tilføje #include <string> allerøverst i koden):
Fold kodeboks ind/udKode 

Jeg har prøvet med string, men det er fordi jeg skal køre et andet program med nogle parameter(som bliver hentet fra main()), vha. system() som kun tager char * const, og hvis jeg så køre en string ind i den giver den en fejl...



Indlæg senest redigeret d. 27.04.2006 22:23 af Bruger #6791
En std::string har en .c_str() funktion der giver adgang til strengen som en const char *, som er det system(...) forventer.

Fold kodeboks ind/udKode 


Elller
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 27.04.2006 22:37 af Bruger #4996
<< < 12 > >>
t