Permalänk
Medlem

Snabb hjälp tack (C++)

Hej!
Sitter med ett litet problem.

Jag har en fil med massa ord i.
Sen vill jag läsa in varja ord i en array.
Varje ord är rad för rad:
ord1
ord2
ord3
...

men nu vet jag inte hur man ska göra för att läsa in alla ord i en array. (Är ny på fil fronten )

PS. Lite hjälpkod skulle vara fint

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Permalänk
Medlem

#include <fstream> .... ifstream laes("filnamn.txt"); int i=0; while(laes) { getline(laes,array[i]; i++; }

Inte en aning om det funkar eller ej, testa

Permalänk

#include <ifstream> using namespace std; int main() { ifstream fil("c:\fil.namn"); char str[100]; fil >> str; fil.close(); }

Helt otestat och möjligen även helt felaktigt.

Permalänk

dummy

Visa signatur

Probably the best Hkkathome© in the world...
*** Borde inte C++ heta ++C istället? ***

Permalänk
Medlem

hmm nope :/

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av AJL
hmm nope :/

#include <iostream> #include <fstream> using namespace std; int main() { string array[10]; ifstream laes("filnamn.txt"); int i=0; while(laes) { getline(laes,array[i]); i++; } laes.close(); cin.get(); return 0; }

??

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av -Aspen-

#include <iostream> #include <fstream> using namespace std; int main() { string array[10]; ifstream laes("filnamn.txt"); int i=0; while(laes) { getline(laes,array[i]); i++; } laes.close(); cin.get(); return 0; }

??

: error C2065: 'getline' : undeclared identifier

Kanske ska säga att det är MSVC++6.0 som jag använder...

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av AJL
: error C2065: 'getline' : undeclared identifier

Kanske ska säga att det är MSVC++6.0 som jag använder...

Jag suger på vad som är C och vad som är C++, vad som är standard vad som inte är standard. Så något som kan programmering får svara på din fråga istället. Nu ska jag sova :)..

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av AJL
: error C2065: 'getline' : undeclared identifier

Kanske ska säga att det är MSVC++6.0 som jag använder...

Lägg till "#include <string>" så borde det fungera.

Visa signatur

Vill du ha svar? Citera mig gärna.

Permalänk
Medlem

Still the same...

Ni kan fortsätta skicka in förslag, ska prova mer imorrn..

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer

Permalänk
Medlem

Lite STL att leka med

#include <fstream> #include <iostream> #include <vector> using namespace std; int main(){ ifstream file("filnamn.txt"); vector<string> vec; copy(istream_iterator<string>(file), istream_iterator<string>(), back_inserter(vec)); for(vector<string>::iterator iter = vec.begin(); iter != vec.end(); iter++) cout << *iter << endl; return 0; }

Jag är osäker på copy(), den kan kräva att algorithm inkluderas.

Iallafall, förklaringar:

ifstream file("filnamn.txt") skapar ett objekt av typen ifstream (in file stream) och försöker öppna filen.

vector<string> vec skapar en vectkr som innehåller stängar (c++stängar).

copy(...) tar två st. input iterators och en output iterator som indata, de två input iteratorerna säger start och slut för det område som ska itereras, output interatorn säger vart varje data i det området ska skickas.

istream_iterator<string> är en iterator över en ström (en fil eller cin t.ex.) som returnerar en string (bryter på whitespace vad jag vet). skapas den med en stöm som argument är den giltig, annars inte.

back_inserter(vec) är en output iterator som lägger till ett objekt längst bak på vec.

for(vector<string>::iterator iter = vec.begin(); iter != vec.end(); iter++) itererar över hela vektorn.

[EDIT] MSVC 6 är nog inte att rekommendera om man vill leka lite mer avancerad c++ och STL. Den kan kompilera helt åt skogen ibland

Detta är c++, inte c. Men visst går det bra att använda gamla c-funktioner i c++ också, man ska bara se till att inkudera rätt headers (inte stdio.h utan cstdio t.ex.)

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Felet är att ni använder getline() när det ska vara laes.getline() (funktionen getline() finns, men jag tror att det är enklare att använda det här). Den här koden ska funka:

#include <iostream>
#include <fstream>
using namespace std;

int main() {
ifstream ladda("filen.txt");
char text[20][50];
for(int i=0; !ladda.eof() && i<20; i++) {
ladda >> text[i];
}
ladda.close();
return 0;
}