C++-ban hogy tudom feldarabolni a beolvasott sort spacek/elválasztókarakterek mentén?
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.
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);
}
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!