3Danke
ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
253
253
EMPFEHLEN
-
Hallo Welt
Ich habe, wie der Titel schon sagt, ein Problem mit den Standard Template Library maps.
Code cpp: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
#include "stdio.h" #include "stdlib.h" #include "windows.h" #include <map> using namespace std; int main() { char String[256]; strcpy(String,"Test"); map< int, char* > MeineMap; map< int,char* >::iterator it; MeineMap.insert(make_pair(0,String)); printf("%s\n",MeineMap); strcpy(String,"Test2"); printf("%s\n",MeineMap); getch(); return 0; }
Die von mir erwartete Ausgabe:
Code :1 2
Test Test
Und die Tatsächliche:
Code :1 2
Test Test2
Ich schliesse daraus, dass die Map kein Speicher, sondern eine Art Linker ist, die nur auf andere Speicheradressen verweist.
Wie kann ich das verhindern? Gibt es eine Alternative zur map, oder gibt es für die map eine eigene Funktion, die direkt Werte speichert? Oder wisst ihr, wie man trotzdem den "String"-Speicher weiterverwenden kann?
Gruss
cwriterIntel inside - Idiot outside :-)
Ich schreibe in C und bin Anfänger.
______________________________
Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
Danke
-
20.07.11 22:51 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hölle, entweder ich habe eine Revolution verschlafen oder du massig Glück:
Du kannst doch nicht eine Map als String mit printf ausgeben**** Das sollte dir eigentlich um die Ohren fliegen.
Gib die korrekt aus, dann siehst du auch wirklich das zweite Ergebnis (wie deepthroat erklärt hat):
Code :1 2 3 4 5 6
map<int,char*>::iterator it( MeineMap.begin() ); while ( it != MeineMap.end() ) { printf( "%s\n", it->second ); ++it; }Geändert von Endurion (21.07.11 um 08:11 Uhr)
-
@deepthroat
Aber ich würde sehr gerne mit den C-Strings arbeiten und einen Array akzeptiert er nicht. Und strcpy() funktioniert ja nicht mit Strings, da gibt's doch die Zuweisung String="Text" ?
@Endurion
Oh, ja
. Meinte ich auch nicht so. Es sollte
heissen. Habe ich wohl falsch abgetippt.Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
char String[256]; strcpy(String,"Test"); map< int, char* > MeineMap; map< int, char* >::iterator it; MeineMap.insert(make_pair(0,String)); it = MeineMap.find(0); printf("%s\n",it->second); strcpy(String,"Test2"); printf("%s\n",it->second); getch(); return 0;
Vielen Dank für die bisherige Hilfe
cwriterIntel inside - Idiot outside :-)
Ich schreibe in C und bin Anfänger.
______________________________
Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
Danke
-
Für die Ablage in der map kannst du trotzdem mit std::string arbeiten - dann speicherst du eine Kopie deines C-Strings. Aus einem std::string bekommt man auch recht leicht ( mit c_str() ) wieder einen C_String.
GrußCode cpp:1 2 3 4 5 6 7 8 9 10
char String[256]; strcpy(String,"Test"); std::map<int,std::string> MeineMap; MeineMap[0] = String; printf( "%s\n", MeineMap[0].c_str() ); strcpy(String,"Test2"); printf( "%s\n", MeineMap[0].c_str() );
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
21.07.11 22:43 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Wie weise ich nach: Browser Problem oder Code Problem?
Von Steb im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 10.03.11, 20:09 -
[IE7 Problem] Problem mit ul/li Höhen im IE7 bei Verwendung eines vertikalen Menüs
Von josDesign im Forum CSSAntworten: 0Letzter Beitrag: 11.01.11, 21:40 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
Problem mit hover- background ändern & Problem bei Reload
Von ollioollio im Forum CSSAntworten: 0Letzter Beitrag: 06.10.04, 14:03 -
Problem mit PopUp (Ja ich weiss Suche benutzten, hab ein ganz anderes Problem)
Von killkrog im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 13.06.02, 12:29





Zitieren


Login






