при попытке прочитать/записать мою программу записывает в файл правильно, но не читает правильно.Чтение/запись файла на C++
Где l, w, n - ints
и transposed
- bool
.
void Matrix::operator >> (ifstream & f)
{
f >> l; //length (int)
f >> w; //width (int)
f >> n; //size (int)
f >> transposed; //(bool)
theMatrix = vector<double>(0);
double v;
for (int i = 0; i < n; ++i) {
f >> v;
cout << " pushing back " << v << endl;
theMatrix.push_back(v);
}
}
void Matrix::operator<<(ostream & o)
{
o << l;
o << w;
o << n;
o << transposed;
//theMatrix is a vector<double>
for (double v : theMatrix) {
o << v;
}
}
Я предполагаю, что этот вопрос связан с считанных operator >>
не знает, сколько байт для чтения из записи в то время как operator <<
не писать определенное количество бит/байт. Есть ли способ прояснить, сколько байтов для чтения/записи, чтобы моя программа записывала соответственно?
Я не новичок в C++, но я новичок в его структуре ввода-вывода. Я испорчен методами Java-сериализации.
Непосредственно перед '' оператора << генерирует выходной сигнал, он создает совершенно пустой 'VECTOR', и пытается вывести содержимое этого пустого вектора. Неудивительно, что результатов нет. Где именно вы ожидали вывода из этого пустого вектора? –
Обычным способом является перегрузка автономных операторских функций 'std :: ostream & operator << (std :: ostream, const Matrix &)' и 'std :: istream & operator >> (std :: istream, Matrix &)'. –
'<<' and '>>' не используются для двоичного ввода-вывода, они считывают и записывают форматированные данные. Вам нужно поместить пробелы между каждым значением, когда вы его напишете, чтобы функция ввода узнала, где заканчивается каждое число. – Barmar