Vector Anfängerfrage



  • Verwende einen std::string für die Zeilen und einen std::vectorstd::string für die Speicherung.

    Grüße...

    Heiko



  • #include <iostream>
    #include <string>
    #include <fstream>
    #include <vector>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    	vector<string> data;
    	fstream file;
    	string filename = "C:\\test.txt";
    	file.open(filename.c_str());
    	if(file.is_open())
    	{
    		string line;
    		while(!file.eof())
    		{
    			getline(file, line);
    			data.push_back(line);
    		}
    	}
    
    	for(vector<string>::iterator it = data.begin(); it != data.end(); ++it)
    	{
    		cout << *it << endl;
    	}
    
    	std::cin.get();
    	return 0;
    }
    


  • Vielen Dank Airdamn. Ich bekomme allerdings 4 Warnungen beim Compilieren mit MSVC++.

    Beispiel:

    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>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert
    

    Kannst du mir sagen woran das liegt?



  • Das liegt an der Länge der Namen (in der Meldung kannst du sehen, wie vector<string>::reverse_iterator voll ausgeschrieben heißt) - die sind zulang für den Debugger und werden deshalb zurechtgestutzt.

    Und die Warnung gehört in die Kategorie "kann gefahrlos ignoriert werden".



  • Ok danke!



  • ok, dann hab ich auch mal ne frage,
    man kann diese warnung glaube irgendwie abschalten?
    wie geht das?
    gibt es eine übersicht, wo man sieht welche warnungen ignoriert werden können und welche besser nicht?

    habe ein größeres projekt und bei mehr als 800warnungen findet man die "wichtigen" ja gar nicht mehr.

    mfg



  • Ja, du kannst die Warnung abschalten: #pragma warning(disable:4786) - und nein, ich kenne keine Liste der bedenkenlosen Warnungen (aber mit der Zeit entwickelt man ein gewisses Gefühl dafür, was einem eine bestimmte Warnung sagen will und wie dringend diese ist).



  • Die erste Möglichkeit die Warnung loszuwerden wäre natürlich ein Update der Entwicklungsumgebung. VC++ 2005 EE ist kostenlos und wesentlich standardkonformer als der 6.0er - und Bezeichner > 255 Zeichen sind dank Templates alles andere als unüblich.

    Sollte das keine Option sein, gibt es mit Sicherheit in den Projektoptionen unter C/C++ ein Feld "Warnungen ignorieren", wie bei neueren Versionen auch. Die Nummer der Warnung (die Du meist ohne das C vorneweg in diese Liste eintragen musst) steht bei der Compilermeldung.

    Grundsätzlich ignorieren sollte man garkeine Warnungen (mal abgesehen von den "unsafe standard" Meldungen des 2005er). Wenn, dann kommt es immer auf den Fall an, und in den allermeisten Fällen hat ein Compiler (wie in diesem Fall) oder eine alte oder schlecht geschriebene Fremdbibliothek schuld daran, dass man Warnungen deaktivieren muss.



  • ok, danke 🙂



  • also der vorige post war nich von mir 😡 😡 😡 - und wurde deshalb auch vom Mod gelöscht

    das mit dem #pragma geht schonmal,
    nur im vc6 (ich muß das leider nehmen) find ich nix zum warnungen deaktivieren, weiß jemand obs sowas da auch gibt?

    mfg
    "nurso"...



  • Naja, den Warning Level kann man runterdrehen, in der Projekteinstellungen halt.


Anmelden zum Antworten