Kezdőoldal » Számítástechnika » Programozás » [C++] Hogyan számolhatnám meg...

[C++] Hogyan számolhatnám meg egy txt file-ban lévő oszlopok számát?

Figyelt kérdés

Minden soron belül van x karakter, ezek a karakterek szóközzel vannak tagolva, pl.: 1 2 3 4 5


Több sor is van, az elképzelésem az volt, hogy getline-al beolvasok egy tetszőleges sort sorvégjelig, majd megszámolom a soron belül az elválasztó karaktereket, jelen esetben szóközöket. A sorok végére nem rakok spacet, egyből '\n' következik, tehát az így megszámolt karakterek számához még hozzáadnék 1-et.


A problémám: Sajnos nem tűnik működőképesnek.


Itt a kód részletem:

int n;

f>>n;

matrix.resize(n);

int m = 1;

string sor;

getline(f, sor, '\n');

for (int i = 0; i < sizeof(sor); i++)

{

if (sor[i] == ' ')

{

m+=1;

}

}

for (int i = 0; i < matrix.size(); i++)

{

matrix[i].resize(m);

for (int j = 0; j < matrix[i].size(); j++)

{

f>>matrix[i][j];

}

}

A teszt file-om így néz ki:

1 2 3

4 5 6

7 8 9


Ebből csak a 4 5 6-ot rakja bele a mátrixba :/ Tudnátok segíteni, hogy mi lehet a baj?


2016. ápr. 3. 17:20
 1/4 anonim ***** válasza:

Ez mi az elején?


int n;

f>>n;

matrix.resize(n);


A tesztfájlodból nem látom mit akarsz beolvasni.

2016. ápr. 3. 17:27
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Ne privátban válaszolj. Azzal nem a sorokat olvasod be legfeljebb a sorok számát, amit megadsz a fájlod elején. De nem adtál meg ilyen adatot. Ha kapsz egy kész kódot legalább legyél azzal tisztában mit csinál.


Ha nem így csinálnád csak így "tanították", akkor csináld úgy ahogy szeretnéd. Nincs megkötve a kezed, sokféleképpen lehet megoldani ugyan azt a problémát.

2016. ápr. 3. 17:48
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
Végül sikerült megoldanom :D Az f>>n-t kivettem, mert tényleg hülyeség volt, helyette végigmentem a sorokon, aztán a visszaraktam a pozíciót 0-ra az fstreamben f.clear(); f.seekg(0, ios::beg); -el Az első for ciklusban meg a sizeof(sor)-t lecseréltem sizeof(getline(f, sor, '\n))-re, az előtte lévő sort töröltem és most úgy tűnik jól működik :D
2016. ápr. 3. 18:10
 4/4 anonim ***** válasza:

sizeof(getline(f, sor, '\n))


Ez visszaadja a getline által visszadobott változó méretét byte-ban. A harmadik paraméter sem szükséges hiszen alapból az.


Szóközök megszámolása praktikusan:


std::ifstream ist{"..."};

for (std::string s; std::getline(ist, s);)

{

std::cout << "szokozok szama: " << std::count(s.cbegin(), s.cend(), ' ') << '\n';

}

2016. ápr. 3. 19:43
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!