C ++ записывает несколько строк из файла

Быстрый вопрос. Я делаю свой портфель C ++ вопрос для универа. Это стандартное отклонение. Мой вопрос касается чтения нескольких строк из файла, см. Текст здесь;

Разработайте и напишите программу на С ++, которая читает набор результатов из файла. scored.datи выводит их среднее значение и стандартное отклонение в cout,

Я не собираюсь беспокоиться по поводу фактического уравнения, у меня эта часть почти отсортирована. Мой запрос основан на выводе текста, прочитанного из файла, в строки. Например, если документ имел эти три балла:

10
15
11

Вместо вывода текста как есть, он поместил бы их в три строки;

Score_One (который будет 10)
Score_Two (что будет 15)
Score_Three (что будет 11)

Я надеюсь, что здесь есть смысл, ребята. Благодарю.

-2

Решение

вам нужно сделать что-то вроде этого:

int raw_score_one = 11; //you have already set this but for the sake of clarity
std::stringstream output;
output << raw_score_one;
std::string Score_One = output.str();

за каждый счет …

1

Другие решения

Вот решение, которое было просто интересно написать, и которое вряд ли можно ожидать. Это может иметь некоторую развлекательную и / или образовательную ценность. Основная идея заключается в том, что значения написаны как

    std::cout << 10 << 15 << 11 << reset << '\n';
std::cout << 1 << 2 << 3 << reset << '\n';

Чтобы достичь этого, нужно немного машин, но это не так уж и плохо. Код взорван:

#include <locale>
#include <iostream>
#include <algorithm>

static int index(std::ios_base::xalloc());
static std::string const names[] = { "One", "Two", "Three", "Four", "Five" };
static std::string const score("Score_");
static std::string const other(" (Which would be ");
std::ostream& reset(std::ostream& out)
{
out.iword(index) = 0;
return out;
}

struct num_put
: std::num_put<char>
{
iter_type do_put(iter_type to, std::ios_base& fmt, char_type fill,
long v) const {
to = std::copy(score.begin(), score.end(), to);
if (fmt.iword(index) < 5) {
to = std::copy(names[fmt.iword(index)].begin(),
names[fmt.iword(index)].end(), to);
++fmt.iword(index);
}
else {
throw std::runtime_error("index out of range!");
}
to = std::copy(other.begin(), other.end(), to);
to = this->std::num_put<char>::do_put(to, fmt, fill, v);
*to++ = ')';
*to++ = ' ';
return to;
}
};

int main()
{
std::cout.imbue(std::locale(std::locale(), new num_put));
std::cout << 10 << 15 << 11 << reset << '\n';
std::cout << 1 << 2 << 3 << reset << '\n';
}
1

По вопросам рекламы [email protected]