std :: getline - это полезный инструмент для чтения одной строки текста или чтения текста до определенного символа и записи его в std :: string, где его можно затем прочитать.По умолчанию в качестве разделителя используется символ новой строки, то есть '\ n', но вы можете изменить это.
Что касается использования потока для чтения ряда целых чисел, то выведите их среднее значение, почему бы просто не прочитать до концафайла, таким образом:
int count = 0, total = 0, num;
while( instr >> num )
{
++count;
total += num;
}
float mean = (count > 0 ) ? total / num : std::numeric_limits<float>::quiet_NaN();
outstr << mean;
Вы можете сделать это функцией, взяв istream & instr и ostream & outstr
Предположим, теперь мы хотим изменить это, чтобы читать несколько строк, каждая счисла, разделенные пробелом или табуляцией.В нашем выводе мы пишем все средства в их собственной строке.
Теперь сделайте что-то вроде этого:
std::string line;
while( std::getline( bigInStr, line ) )
{
std::istringstream iss(line);
outputMean( iss, outstr );
outstr << '\n';
}
, хотя вы можете не выводить NaN, а просто оставить эту строку пустойна выходе.Функция, вычисляющая среднее значение, вероятно, захочет использовать NaN в качестве возвращаемого значения, если она должна возвратить число с плавающей точкойМы могли бы вычислить дисперсию, асимметрию и эксцесс одновременно, если мы хотим при выполнении итерации.
Затем вы бы вывели их в виде нескольких значений в строке и вам пришлось бы выбрать свой собственный разделитель.В этом случае я предпочитаю использовать tab ('\ t').
_