Einfügen eines Char-Arrays in einen Vector
-
ok meinetwegen, ich hab aber bisher noch nie mit dieser Art von Strings gearbeitet:
std::vectorstd::string daten;
allein diese Deklaration erzeugt 4 Warnungen:C:\Dokumente und Einstellungen\Andy\Desktop\zrsgsg\dsfsdf.cpp(33) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,std::basic_string<char,std::char_traits<char>,std::allocator<char>
,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,int>' : identifier was truncated to '255' characters in the debug information
C:\Dokumente und Einstellungen\Andy\Desktop\zrsgsg\dsfsdf.cpp(33) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std
::basic_string<char,std::char_traits<char>,std::allocator<char> > &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,int>' : identifier was truncated to '255' characters in the debug information
c:\programme\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::
vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
c:\programme\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::
~vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug informationDie ich ehrlich gesagt nicht verstehe. Hat er Probleme damit das "daten" ursprüglich mit einem char-Array verwendet wurde?
Ich benutze Visual C++ 6.0, muss ich da irgendwelche Einstellungen ändern?Viele Grüße
Andreas
-
Wie sieht denn dein Code jetzt aus mit den Fehlern?
-
Welche Fehler meinst du, das eben waren Warnungen.
Der Code sieht im Moment einfach so aus:#include <iostream> #include <string> #include <vector> int main() { //char acText[256]; std::vector<std::string> daten; //for(int i = 0; i < 10; i++) // { //sprintf(acText, "Zahl: %i", i); // daten.push_back(std::string(acText)); //} /* for(std::vector<std::string>::iterator dIter2(daten.begin()); dIter2 != daten.end(); ++dIter2) { printf("%s\n", dIter2); }*/ return 0; }
-
Zu den Warnungen:
Mit C4786 sagt Dir der Compiler, dass einige Type- Namen zu lang für den Debugger sind. Dies kann getrost ignoriert werden.Gibt es einen speziellen Grund, dass Du VC6.0 verwendest?
Simon
-
Warum fragst du, ist der so schlecht?
-
Die Warnungen kannst du ignorieren (diese beziehen sich nur auf die langen template-Namen, welches für's Debugging auf 255 Zeichen gekürzt werden).
Du kannst die Warnungen beim MSVC auch folgendermaßen ausschalten:
#pragma warning (disable: 4786)
P.S. Der VC6.0 ist schon einige Jahre alt (1998?), und unterstützt nicht alle C++ Standard Features (z.B. bei Templates und Namespaces).
Du kannst dir eine aktuelle Express-Version des Visual Studios bei MS runterladen.
-
Und ersetze printf(...) dann mal durch *std::cout << dIter2 << endl;
-
thx, ich hats jetzt so realisiert:
char acText[256]; std::vector<std::string> daten; for(int i = 0; i < 10; i++) { sprintf(acText, "Zahl: %i", i); daten.push_back(std::string(acText)); } for(std::vector<std::string>::iterator dIter2(daten.begin()); dIter2 != daten.end(); ++dIter2) { printf("%s\n", dIter2->c_str()); }
Um meinem Char-Array wenigstens etwas treu zu bleiben^^
-
Andreas_LL schrieb:
...allein diese Deklaration erzeugt 4 Warnungen:...
Das liegt am extrem veralteten VC++ 6.0. Die Warnung C4786 kann aber getrost deaktiviert werden (Der VC++ 6.0 hat Probleme mit Templates).
Andreas_LL schrieb:
Die ich ehrlich gesagt nicht verstehe.
Die Warnungen sind auch wie gesagt nur auf ein Fehler im VC++ 6.0 zurückzuführen.
Andreas_LL schrieb:
Ich benutze Visual C++ 6.0, muss ich da irgendwelche Einstellungen ändern?
les dir mal die "#pragma warning" - Direktive in der MSDN durch.
Davon ganz abgesehen: Wenn du nicht wegen der Arbeit oder so gezwungen bist mit dem VC++ 6.0 zu arbeiten solltest du ihn dringens ersetzen. Sei es in dem du auf den kostenlosen VC++ 2008 Express oder irgendeinen anderen aktuellen Compiler umsteigst.
VC++ 6.0 hat mehrere Probleme mit dem C++ Standard, wo das nur die Kleinste (wenn auch eine ziemlich nervige) Auswirkung ist. Ich weiß z.B. nicht wie du Zeiger nach allozierung mit new prüfst. In VC++ 6.0 wird unter den Standardeinstellungen 0 zurückgegeben, der Standard verlangt aber eine Exception (kann man aber umstellen, steht irgendwo unter new beschrieben).
cu André
-
Andreas_LL schrieb:
thx, ich hats jetzt so realisiert:
...
Um meinem Char-Array wenigstens etwas treu zu bleiben^^Was willst du eigentlich Programmieren: C oder C++?
printf & co sind nicht typsicher, Fehler werden in der Regel erst zur Laufzeit sichtbar...
std::cin und std::cout sowie die Streamklassen insgesamt sind in der Regel die bessere Alternative.
cu André