Miten saan ladattua teksti tiedostosta luvut taulukkoon niin että tekstitiedostossa olevat luvut ovat samalla rivillä?
Ja kieli oli...?
kieli on c++
No yksinkertaisimmillaan C++:ssa menee suunnilleen näin:
#include <fstream> #include <iterator> #include <vector> ... std::ifstream in("luvut.txt"); std::vector<int> v((std::istream_iterator<int>(in)), std::istream_iterator<int>());
Huomaa ylimääräiset sulkeet tuon v:n konstruktorille lähetettävän ensimmäisen parametrin ympärillä! Ilman niitä kääntäjä tulkitsee tuon C++:n syntaksin takia funktion esittelyksi ja antaa liudan virheitä kun v:tä yrittää käyttää jossain.
en kyllä nyt ymmärtänyt yhtään mitään
Tarkoitatko siis, että ne luvut ovat tekstitiedostossa samalla rivillä ja että ne pitää sieltä lukea taulukkoon?
Onko taulukko tuttu laitos? Jos ei, tutustu C-oppaan taulukko-osuuteen tai Sisuaskin käyttämään vector-luokkaan.
int luvut[10]; std::vector<int> lukuvektori; int luku; lukuvektori.push_back(luku);
Ovatko tiedostot tuttuja? Jos eivät, tutustu tiedostovirtoihin.
std::ifstream tiedosto("juttu.txt"); tiedosto >> muuttuja;
Ovatko silmukat tuttuja? Jos eivät, tutustu vaikkapa C-oppaan silmukkaosuuteen.
while (tiedosto >> luku) { lukuvektori.push_back(luku); } for (i = 0; i < lukuvektori.size(); ++i) { std::cout << lukuvektori[i] << std::endl; }
Noista osista pitäisi jo onnistua. :)
Kunnon C++-koodari tekee sen tuolla Sisuaskin tavalla. :P Sellaiset tavat vain eivät oikein aukene, jos ei edes pidempi mutta toiminnaltaan selkeämpi vaihtoehto ole selvä.
siis kun saan ladattua luvun teksti tiedostosta muuttujaan niin että aina yhdellä rivillä olevat luvut ovat yhdessä muuttujassa. Mutta se pitäisi saada niin että yhdellä rivillä on esim. 5 lukua ja ensimmäinen luku tulee taulukon ensimmäiseen lukuun ja toinen luku taulukon toiseen lukuun. Siis jos tekstitiedostossa lukee:12345 , niin silloin
taulukko[0] = 1 taulukko[1] = 2 taulukko[2] = 3 taulukko[3] = 4 taulukko[4] = 5
Eli mitä silloin pitää laittaa
ifstream syotto("tiedot.txt"); for (int i = 0; i<5; i++) { syotto >> taulukko[i]; }
tuon tilalle?
Mutta silloinhan luku on 12345. Numerot ovat sitten asia erikseen, ne voit lukea vaikkapa merkki kerrallaan.
char merkki; int luku; tiedosto >> merkki; luku = merkki - '0';
kiitos nyt sain sen toimimaan. :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.