Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

03.05.2008, 18:23

strings bearbeiten

hi @ all,

ich hab 2 fragen zu strings in c++:

1.

wie kann ich strings aneinanderfügen?
beispiel aus php:

C-/C++-Quelltext

1
2
3
4
while(bedingung)
{
string .= string_anfuegen . noch_ein_string_anfuegen;
}


2.
ergibt sich vill. schon aus frage 1:

wie kann ich ein string ändern?
beispiel:

C-/C++-Quelltext

1
string ="mein name ist" . mein_name . "und wohne in" . mein_wohnort;


danke schonmal für antworten

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

2

03.05.2008, 18:25

In C++ benutzt du "+" und nicht "." ;) Aber nur, wenn du std::string benutzt! Mit char* ist das etwas komplexer.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

03.05.2008, 18:32

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// so mit std::string

std::string s1("Du"),s1(" so "),s3(" geht "),s4(" das ");

s1  += s2 + s3 + s4;

//oder mit c mitteln


char s1[] = "Oder ";
char s2[] = "so mit";
char s3[] = "C-Style!";

char ges[64] = {0};

sprintf(ges,"%s%s%s",s1,s2,s3);

4

03.05.2008, 19:06

danke für die antworten

5

03.05.2008, 19:27

C++: std::stringstream.
C: sprintf (string print formated)

zum formatieren von Strings.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Anonymous

unregistriert

6

03.05.2008, 20:52

Ich hätte jetzt eher strcat als sprintf genannt, da hier kein zusätzlicher Puffer benötigt wird. :)

7

03.05.2008, 23:57

Also bitte keine ?printf...s in C++ verwenden. :D Alleine schon der Typsicherheit wegen. Auch kann man eigene Datentypen nicht so komfortabel einfügen. ;)

Ein kleiner Überblick (ungetestet):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <sstream>
#include <string>
#include <iostream>

struct Point
{
    int x;
    int y;
    
    Point(int x, int y)
        : x(x), y(y)
        { }
};

std::ostream& operator<<(std::ostream& out, Point const& p)
   {
       out << "(" << p.x << ", " << p.y << ")";
       return out;
   }

int main()
   {
       std::string hwde = "Hallo Welt";
       std::string hwen("Hello World");
       
       std::cout << hwde << std::endl << hwen << std::endl;
       
       Point p(12, 13);
       
       std::cout << p << std::endl;
       
       std::stringstream ss; // Funktioniert analog zu cout

       
       ss << hwde << "-" << hwen << "-" << p;
       
       std::cout << ss.str() << std::endl;
           // ss gibt einen std::string zurück.

    
       return EXIT_SUCCESS;   
   }


Grüße...

8

04.05.2008, 12:26

Zusammengefasst: std::string ist schon cool, wenn man da an die Grenzen stößt, nimmt man std::stringstream. Die ganz harten (bzw. die C Programmierer) nehmen sprintf oder ähnliches, wobei diese weniger konfortabel und sehr viel fehleranfälliger sind, als die C++ Klassen. C Funktionen dürften allerdings minimal schneller sein, sowie etwas kleineren Quellcode haben, was sich auf die Größe der kompilierten Datei auswirken kann.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige