Mam plik tekstowy taki jak ten:
Żądło Inny ciąg 0 12 0 5 3 8
Żądło Inny ciąg 8 13 2 0 6 11
I chcę policzyć, ile jest liczb. Myślę, że moim najlepszym wyborem jest użycie podczas pisania cyklu z warunkiem zakończenia liczenia, wtedy rozpoczyna się kolejna linia, ale nie wiem, jak zatrzymać czytanie na końcu linii.
Z góry dziękuję za pomoc;)
Odpowiedzi:
11 dla odpowiedzi nr 1Podziel swoje input
strumień w linie
std::string line;
while (std::getline(input, line))
{
// process each line here
}
Aby podzielić linię na słowa, użyj ciągu znaków:
std::istringstream linestream(line); // #include <sstream>
std::string word;
while (linestream >> word)
{
// process word
}
Możesz powtórzyć to dla każdego słowa, aby zdecydować, czy zawiera on liczbę. Ponieważ nie określiłeś, czy twoje liczby są liczbami całkowitymi, czy nie liczbami całkowitymi, zakładam int
:
std::istringstream wordstream(word);
int number;
if (wordstream >> number)
{
// process the number (count, store or whatever)
}
Zastrzeżenie: To podejście nie jest idealne. Wykryje „liczby” na początku słów takich jak 123abc
, pozwoli również na format wejściowy taki jak string 123 string
. Również to podejście nie jest bardzo skuteczne.
4 dla odpowiedzi nr 2
Dlaczego nie używasz a getline()
?
1 dla odpowiedzi nr 3
Koniec linii jest reprezentowany przez znak „n”. Umieść warunek w pętli while, aby kończył się, gdy napotka „n”