problem mit einem vector...*verzweifel*
-
nachdem ich mir ewig der schädel zermartert habe, entschloss ich mich euch doch zu nerven mit meinem prob (mir fällt nix mehr ein c-noob)
problem:
ich hab einen ordner mit ein paar tausend bildern, durch diesen ordner gehe ich mit findfirstfile/findnextfile und bekomme dateinamen. Diese sollten unsortiert/gemischt in eine textdatei ausgegeben werden.lösungsversuch:
mit findfirstfile/findnextfile und bekomme dateinamen
pack sie namen in einen vector, mische mit random_shuffle
schreib die vectordaten in eine dateiich hab
"vector<char> v(counter);"
...später...
v.at(count) = wfd2.cFileName; ((wfd2.cFileName ist vom typ char[260]))bei vector<char> v(counter); gibts fehler: cannot convert from 'char [260]' to 'char'
bei vector<char[260]> v(counter); gibts fehler: cannot convert from 'int' to 'char [260]'
bei vector<char*> v(counter); gibts keine fehler aber in allen feldern steht das selbe drin2. versuch
Also ich habs mal mit vector<string> getestet... das bringt aber mein restliches programm total durcheinander....
3. versuch mit einem char array
int counter = 0;
---counter wird hochgezählt---
char vec[counter][260]; //statt vector
vec[count] = wfd2.cFileName;aber fehler....

error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'vec' : unknown size
error C2106: '=' : left operand must be l-valuelangsam geht mir mein c aus bzw meine ideen....
danke für jedes Posting

tomk
-
Hallo,
das ein vector<char> nicht funktioniert sollte klar sein. Ein char ist ein einzelnes Zeichen und kann damit natürlich keinen ganzen String speichern.2. versuch
Also ich habs mal mit vector<string> getestet... das bringt aber mein restliches programm total durcheinander....
Das ist ein guter Weg. Inwiefern hat das dein restliches Programm durcheinander gebracht? Du weißt, dass du von std::string nach const char* durch den Aufruf von std::string::c_str() kommen kannst, richtig?
-
HumeSikkins schrieb:
Das ist ein guter Weg. Inwiefern hat das dein restliches Programm durcheinander gebracht? Du weißt, dass du von std::string nach const char* durch den Aufruf von std::string::c_str() kommen kannst, richtig?
danke für die fix antwort... das mit std::string::c_str() wusst ich noch nicht.. wie gesagt c-noob

ich werd mal sehen was ich damit anfangen kann
hier ist noch ein bissel code aus der entsprechenen stelle
vector<string> v(counter); int count = 0; f2Handle=FindFirstFile(temp,&wfd2); do { if (!( (wfd2.cFileName[0]=='.') && ( (wfd2.cFileName[1]=='.' && wfd2.cFileName[2]==0) || wfd2.cFileName[1]==0 ) )) { if (wfd2.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {} else { v.at(count) = wfd2.cFileName; count++; printf("%s\n",wfd2.cFileName); } } } while (FindNextFile(f2Handle,&wfd2)); FindClose(f2Handle); printf("%s\n",v.at(0)); // geht nicht mehr printf("%s\n",v.at(counter-1)); // auch nicht random_shuffle(v.at(0),v.at(counter-1)); // sowieso nicht
-
printf("%s\n",v.at(0)); // geht nicht mehr
Korrekt:
printf("%s\n",v.at(0).c_str());oder
cout << v.at(0) << "\n";printf("%s\n",v.at(counter-1)); // auch nicht
siehe oben.
Richtig:
random_shuffle(v.begin(),v.end());
-
printf("%s\n",v.at(0).c_str()); // geht nicht mehr printf("%s\n",v.at(counter-1).c_str()); // auch nichtNa, was ist wohl in deinem Vector drin? Genau std::string!
-
DANKE!!!!!!!! es funzt jetzt...