контейнер вектор записать в файл, помощь по Qt4 |
Здравствуйте, гость ( Вход | Регистрация )
контейнер вектор записать в файл, помощь по 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 |
|
|
AD |
16.11.2009, 18:57
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Чтение очень похоже. Попытайтесь сами. |
|
|
Litkevich Yuriy |
16.11.2009, 19:02
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
в TXT, только поштучно руками сохранять. Если же просто в файл, то смотри QDataStream, он поддерживает QVector
|
|
|
registr |
16.11.2009, 19:03
Сообщение
#4
|
Участник Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1 |
Спасибо, попробую сегодня. Чтение аналогично, только через in >> ... ?
В STL (а может я путаю?) есть фунции
и
Есть ли подобноее в Qt4? (только что нашел, еще не пробовал, но может и под Qt4 функции эти пойдут) |
|
|
AD |
16.11.2009, 19:26
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Ну тут резонный задан вопрос. Файл текстовый? Если текстовый, то так, как я показал, будет запись. Чтение - почти также, но немного похитрее. Попробуйте сами.
Если файл бинарный, то вместо QTextStream использовать QDataStream. А он поддерживает вектора. И можно будет сделать строчками:
Сообщение отредактировал AD - 16.11.2009, 19:27 |
|
|
registr |
16.11.2009, 19:32
Сообщение
#6
|
Участник Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1 |
Большое спасибо!
|
|
|
registr |
16.11.2009, 23:44
Сообщение
#7
|
Участник Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1 |
Методом проб и ошибок удалось записать вектор в файл. Вот:
чтобы сохранить в текстовый файл file.txt
чтобы сохранить в бинарный файл file.bin сразу весь вектор
|
|
|
Litkevich Yuriy |
16.11.2009, 23:58
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
registr |
17.11.2009, 18:49
Сообщение
#9
|
Участник Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1 |
Вообщем да. Если файл нигде дальше открываться не будет заново, то его можно не закрывать.
Вдруг кому-нибудь еще пригодиться:
|
|
|
registr |
17.11.2009, 22:19
Сообщение
#10
|
Участник Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1 |
Цитата QFile file1("file.txt"); file1.open(QIODevice::WriteOnly); QTextStream out1(&file1); for (int i=0; i<A1.size(); i++) out1 << A1[i] << "\n"; // запишется в столбик file1.close(); QString str; file1.open(QIODevice::ReadOnly); QTextStream in1(&file1); while (!file1.atEnd()) { str = in1.readLine(); A2.push_back(str.toFloat()); } Такой способ записи и считывания оказался глючным. AD, а какой предлагали Вы? Бьюсь, никак не получается. |
|
|
Текстовая версия | Сейчас: 22.12.2024, 20:18 |