Problem mit ifstream
-
pop en - aus der liste entfernen.
nur zu dem zeitpunkt gibt's in der liste noch nix zum entfernen, da du sie gerade erst erzeugt hast.
was willst du den mit dem pop_front bezwecken?
-
Ich habe folgende map und list erzeugt.
map <string,int> mymap; list <string> mylist; CString strTemp; //Datei öffnen ofstream file ("Quelle.txt"); mymap.insert(make_pair(strTemp,j)); mylist.push_back("Geräte intern"); map<string,int>::iterator pIterMap; list<string>::iterator pIterList; file<<"Map Items\n"; for(pIterMap = mymap.begin();pIterMap != mymap.end();++pIterMap) file<<pIterMap->first<<"="<<pIterMap->second<<"\n"; file<<"\nList items"; for(pIterList = mylist.begin();pIterList != mylist.end();++pIterList, k++) file<<*pIterList<<'\n';
Nun möchte ich die Datei Quelle.txt wieder einlesen, um die Daten an eine Combobox zu übergeben.
-
datei öffnen (ifstream) ->
map anlegen ->
in die map einlesen ->
wenn zeile "List Items:"
list anlegen ->
in die list einlesenwo liegt das problem?
was genau willst du tun?
-
wie gerade schon gepostet.
Ich möchte die Datei Quelle.txt wieder auslesen.
Ich weis aber nicht, wie ich die Sachen wieder in die map bzw list kriege.
Und ich weis auch nicht wie ich die list auslese, damit die daten dann in meine Combobox kommen.
-
so zb
int main () { ifstream fin("output.txt"); string tmp; getline(fin,tmp); //1.Zeile: Map Items map<string,int> m; while (getline(fin,tmp) && tmp != "List Items:") { //sehr allgemein gehalten. und an dein format angepasst. stringstream s(tmp.substr(tmp.find("=")+1,string::npos)); int i; s >> i; m[tmp.substr(0,tmp.find("="))] = i; cout << tmp.substr(0,tmp.find("=")) << "=" << i << endl; } list <string> l; while (getline(fin,tmp)) { l.push_back(tmp); cout<< tmp << endl; } }
-
Irgendwie funktioniert das noch nicht.
Er crashed immer beistringstream s(tmp.substr(tmp.find("=")+1,string::npos));
Die Fehlermeldung lautet:
s' verwendet undefiniertes class 'basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >''initializing' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' kann nicht in 'int' konvertiert werden
warum
-
#include <sstream> //->stringstream #include <fstream> #include <list> #include <map> using namespace std;
so sollte der kopf deiner datei mindestens aussehen
-
Danke!
Wenn Du mir jetzt noch sagen könntest wie einen string (tmp) in einen CString konvertieren kann, wär ich dir auf immer dankbar.
-
wenn du mir sagst, was ein CString ist. Der CString aus der MFC?
Wenn der im Konstruktor ein const char * nehmen kann (vermute ich mal) dannCString mfc_str = standard_str.c_str();
c_str() liefert einen Zeiger auf ein nullterminiertes char array (einen C-String)
-
ja, der CString ist aus mfc. Ist ne Membervariable.
Hab den Code jetzt so geändert.
list <string> l; while (getline(fin,tmp)) { l.push_back(tmp); m_strQuelle = tmp.c_str(); UpdateData(true); MessageBox(m_strQuelle,"info",MB_OK); //nur zu testzwecken }
der läuft allerdings nicht in die while-Schleife. Habs auch ohne Schleife probiert. Allerdings ist m_strQuelle weiterhin leer.