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

cereus

Frischling

  • »cereus« ist der Autor dieses Themas

Beiträge: 45

Wohnort: Ufg

  • Private Nachricht senden

1

04.12.2008, 14:40

Teilstring in andren String kopieren

Hallo
wie kann ich ein Teil eines Strings in einen anderen kopieren?
Ich hab zum Beispiel einen String 1 und jetzt will ich in einem anderen String 2 den Teil, der bei String 1 in Anführungszeichen( " ) steht haben.
Wie mach ich das? Ich hab mir schon die Klasse string angeschaut, aber ich weiß nicht welche Funktion ich nehmen soll!
--- ---

Anonymous

unregistriert

2

04.12.2008, 14:53

Einen "Teil" oder ein Element?

C-/C++-Quelltext

1
char array[1][2]={"Sprite","Cola"};

Du möchtest "Sprite" jetzt in einem neuen array ablagern?

cereus

Frischling

  • »cereus« ist der Autor dieses Themas

Beiträge: 45

Wohnort: Ufg

  • Private Nachricht senden

3

04.12.2008, 14:57

ich will gar nichts mit arrays machen sonder mit strings. Einfach alle Zeichen zwischen zwei Anführungszeichen sollen in einen anderen string kopiert werden.
--- ---

Anonymous

unregistriert

4

04.12.2008, 15:08

Zeig doch mal dein Code her. Sind dem 2. String denn schon Zeichen zugewiesen worden? Normalerweise gibts da mehrere Möglichkeiten:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    string string_1 = "Hallo!";
    string string_2 = string_1;
    cout<< string_2 <<endl;
    cin.get();
}

oder:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
using namespace std;

int main(void)
{
    string string_1 = "Hallo!";
    string string_2 = "";
    string_2 = string_2 + string_1;
    cout<< string_2 <<endl;
    cin.get();
}

(Eine Methode die man eher vermeiden sollte)
Erklär doch mal was du mit "Teil eines strings" meinst oO

Anonymous

unregistriert

5

04.12.2008, 15:12

Easy Aufgabe.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// ///////////////////////////////////////////////////////////////////////////

// GLOBAL

//

// Returns a new string resulting from replacing all occurrences of 'what'

// in 'value' with 'replace'.

//

// \param value: String with occurrences to replace.

// \param what: String to replace.

// \param replace: Replacement for 'what'.

// \result: New string with all replaced occurrences.

// ///////////////////////////////////////////////////////////////////////////

std::string replace (const std::string& value, const std::string& what, const std::string& replace)
{
    std::string result = value;
    for (std::string::size_type i = 0, position = 0; (i = result.find (what, position)) != std::string::npos; )
    {
        result.replace (i, what.size (), replace);
        position = i + replace.size ();
    }
    return (result);
}


Benutzung:

C-/C++-Quelltext

1
2
3
4
5
6
std::string string_mit_platzhaltern = "$hello$, $world$";

string_mit_platzhaltern = replace (string_mit_platzhaltern, "$hello$", "Hallo");
string_mit_platzhaltern = replace (string_mit_platzhaltern, "$world$", "liebe Welt!");

std::cout << string_mit_platzhaltern << std::endl;


Ausgabe: "Hallo, liebe Welt!"

Ich denke mal damit kannst du was Anfangen.

Löst zwar dein Problem nicht im Detail, aber du kannst dir hierraus die nötigen Methoden raussuchen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

04.12.2008, 15:14

Will er nicht eher einen Teilstring haben?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
std::string CopySubstring( const std::string& str, const std::string::value_type& c, std::string::size_type start = 0 )
{
    std::string result = "";
    std::string::size_type i0, i1;
    
    i0 = i1 = std::string::npos;

    if ( ( i0 = str.find( c, start ) )!= std::string::npos )
    {
        ++i0;
        i1 = str.find( c, i0 );
    }

    if ( i0 != std::string::npos && i1 != std::string.npos )
        result = str.substr( i0, i1-i0 );

    return result;
}
@D13_Dreinig

Anonymous

unregistriert

7

04.12.2008, 15:21

David_pb
Sollst dich schämen ;) Er hätte so die find-Methode kennengelernt. ;-) Aber egal.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

04.12.2008, 15:25

Zitat von »"unsigned long"«

David_pb
Sollst dich schämen ;) Er hätte so die find-Methode kennengelernt. ;-) Aber egal.


Hm, tut mir Leid! :p
@D13_Dreinig

Anonymous

unregistriert

9

04.12.2008, 15:28

David_pb
Ja ja, hast das wiedermal mit Absicht gemacht! Nur um dem guten alten lieben unsigned long zu zanken, ja ja :lol:

10

04.12.2008, 15:29

Zitat

Ich hab mir schon die Klasse string angeschaut, aber ich weiß nicht welche Funktion ich nehmen soll

Vielleicht gibt es ja keine vorgefertigte Methode dafuer. Man muss sich halt selbst etwas mit den gegebenen Sachen wie find substring etc. fuer den entsprechenden Anwendungszweck programmiereren. Wobei es natuerlich viele Moeglichkeiten der Realisierung gibt. Mein Tipp: Wie wuerdest du den Teilstring in Anfuehrungszeichen herausfinden? Verbalisiere deine Vorgehensweise (unabhaengig von der Sprache) und setze es dann programmtechnisch (in Java oder C# oder C++) um.

PS: Ja, das hier gebotene sind Loesungen in C++. Spezifiziere doch das naechste mal deine Programmiersprache bitte (und welche Repraesentation/Stringklasse du benutzt).

Werbeanzeige