crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> контейнер вектор записать в файл, помощь по Qt4
registr
  опции профиля:
сообщение 16.11.2009, 18:48
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 115
Регистрация: 16.11.2009
Пользователь №: 1234

Спасибо сказали: 8 раз(а)




Репутация:   1  


Помогите пожалуйста, не знаю как записать в файл вектор а:

QVector<float> a;
// далее определяю a

// помогите дальше записать его в файл, например, в file.txt

QVector<float> b;
// а потом считать с него в вектор b
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
registr
  опции профиля:
сообщение 18.11.2009, 16:35
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 115
Регистрация: 16.11.2009
Пользователь №: 1234

Спасибо сказали: 8 раз(а)




Репутация:   1  


Спасибо, попрубую сегодня с этим кодом.

Вот была еще такая идея считывания, где числа записывались через пробел в текстовый файл:

// ...
float num;
char sym;

QFile file1("file.txt");
file1.open(QIODevice::ReadOnly);
QTextStream in1(&file1);
while (!file1.atEnd())
{
   in1 >> num >> char;
   A2.push_back(num);
}

здесь фишка в том, что число записывается в num, а символ "пробела" в sym и все это прогоняется до конца файла. Но ошибка возникает в строчке: (in1 >> num >> char;) Видимо, он пытается считать сразу весь файл, а как ему задать, чтобы считал сначала число, символ, потом, число, символ, и т.д. по циклу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 18.11.2009, 18:09
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(registr @ 18.11.2009, 16:35) *
здесь фишка в том, что число записывается в num, а символ "пробела" в sym и все это прогоняется до конца файла. Но ошибка возникает в строчке: (in1 >> num >> char;) Видимо, он пытается считать сразу весь файл, а как ему задать, чтобы считал сначала число, символ, потом, число, символ, и т.д. по циклу?

Блин, я нифига не понял из этого текста!

При открытии файла НЕОБХОДИМО указывать как его следует открывать. Т.е. Вы открываете файл без лишних указаний (по-умолчанию, как бинарный), а читать пытаетесь как текстовый. Это первое, что бросается в глаза. Надо указывать флаг QIODevice::Text!
Второе, насколько я помню, знак переноса строки используется вместе с возвратом каретки (по крайней мере, в данном случае). Поэтому лучше писать или так "\r\n", или так endl!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- registr   контейнер вектор записать в файл   16.11.2009, 18:48
- - AD   QFile* file; /* где-то определено и инициализирова...   16.11.2009, 18:57
- - Litkevich Yuriy   в TXT, только поштучно руками сохранять. Если же п...   16.11.2009, 19:02
- - registr   Спасибо, попробую сегодня. Чтение аналогично, толь...   16.11.2009, 19:03
|- - AD   Ну тут резонный задан вопрос. Файл текстовый? Если...   16.11.2009, 19:26
- - registr   Большое спасибо!   16.11.2009, 19:32
- - registr   Методом проб и ошибок удалось записать вектор в фа...   16.11.2009, 23:44
- - Litkevich Yuriy   Цитата(registr @ 17.11.2009, 2:44) file.c...   16.11.2009, 23:58
- - registr   Вообщем да. Если файл нигде дальше открываться не ...   17.11.2009, 18:49
|- - AD   Ну есть замечания по поводу кода. Поправил немного...   18.11.2009, 13:35
- - registr   ЦитатаQFile file1("file.txt"); file1.op...   17.11.2009, 22:19
|- - AD   Цитата(registr @ 17.11.2009, 22:19) Такой...   17.11.2009, 22:35
- - registr   В векторе порядка 50000 чисел, но может быть и бол...   18.11.2009, 11:46
- - registr   Спасибо, попрубую сегодня с этим кодом. Вот была ...   18.11.2009, 16:35
- - AD   Цитата(registr @ 18.11.2009, 16:35) здесь...   18.11.2009, 18:09


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 21:44