Имам текстов файл по следния начин:
Стинг Друг низ 0 12 0 5 3 8
Стинг Друго въже 8 13 2 0 6 11
И искам да преброя колко числа са там. Мисля, че най-добрият ми залог е да се използва, докато тип цикъл с условие да прекрати преброяването, след това започва друга линия, но не знам как да спра да чета в края на линията.
Благодаря предварително за помощта;)
Отговори:
11 за отговор № 1Разделете си input
поток в линии
std::string line;
while (std::getline(input, line))
{
// process each line here
}
За да разделите линия на думи, използвайте струнни потоци:
std::istringstream linestream(line); // #include <sstream>
std::string word;
while (linestream >> word)
{
// process word
}
Можете да повторите това за всяка дума, за да решите дали тя съдържа число. Тъй като не сте уточнили дали вашите номера са цели числа или не, ще предположим int
:
std::istringstream wordstream(word);
int number;
if (wordstream >> number)
{
// process the number (count, store or whatever)
}
Отказ от отговорност: Този подход не е перфектен. Тя ще открие "номера" в началото на думи като 123abc
, той също така ще позволи входния формат като string 123 string
, Също така този подход не е много ефективен.
4 за отговор № 2
Защо не използваш getline()
?
1 за отговор № 3
Край на реда е представен с знак "n". Поставете условието, докато цикълът ще свърши, когато срещне "n"