Kezdőoldal » Számítástechnika » Programozás » C++-ban hogy tudom feldaraboln...

C++-ban hogy tudom feldarabolni a beolvasott sort spacek/elválasztókarakterek mentén?

Figyelt kérdés
Pl. ha azt akarom, hogy egy vektort töltsön fel a program a beolvasott adatokkal. Bemenet pl: 1 2 3 4 5 6, vektor értéke {1,2,3,4,5,6}

2021. febr. 24. 19:44
 1/4 anonim ***** válasza:
74%

std::vector<int> vec;

int temp = 0;

while (std::cin >> temp) {

vec.push_back(temp);

}


A while addig fut, amíg be nem adsz neki egy End of Transmission vagy End of File karaktert (Ctrl + D vagy Ctrl + Z, legalábbis Windows alatt), vagy valamit, ami nem értelmezhető int-ként, pl. egy akármilyen betűt vagy stringet.

2021. febr. 24. 19:59
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
Köszönöm a gyors és hasznos választ!
2021. febr. 24. 20:28
 3/4 anonim ***** válasza:

Itt válaszolnék a privátra :) Szóval beolvasás az első enterig, és abból az egy sorból szedje ki az int-eket.


Ez már trükkösebb. Először be kell olvasni a sort egy stringbe a getline-nal. Aztán stringstreamet csinálunk belőle, ami hasonlóképpen használható, mint a standard input stream (cin). Ezt a stringstreamet használjuk a while feltételében a cin helyett. Ez is legfeljebb az első hibás karakterig dolgozza fel a számokat.


#include <iostream>

#include <string>

#include <sstream>

#include <vector>

int main() {

std::string tempstr; // bekért sor

getline(std::cin, tempstr); // sor bekérése

std::stringstream ss(tempstr); // stringstream létrehozása a sorból

std::vector<int> vec; // innentől ugyanúgy

int temp = 0;

while (ss >> temp) {

vec.push_back(temp);

}

}

2021. febr. 25. 00:39
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:
Köszönöm ezt is!
2021. febr. 25. 10:03

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!