Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
#1

Использовать значения двух строк из файла - C++

17.11.2012, 14:43. Просмотров 369. Ответов 5
Метки нет (Все метки)

Добрый день!
Столкнулся с задачей интерактивной работы с данными из текстовых файлов (float), в которых одна строка характеризует один объект, до этого момента мне нужно было по очереди эти строки использовать, это делалось так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    
std::vector<float> db;  //объявим вектор под значения из строки файла
 
while(getline(input,line)) //цикл чтения из файла и расчеты в нем
    {    
     db.reserve(700);         //резерв места
     std::stringstream ss(line.c_str());
     std::copy(std::istream_iterator<float> (ss), std::istream_iterator<float> (), std::back_inserter(db) );
 
                //вычисления 
    }
   //   input.close();
Сейчас мне нужно одновременно использовать значения минимум двух строк, причем зная их номер (строки нужно использовать не все подряд, а выборочно).
Как бы это реализовать? количество строк заранее неизвестно, количество элементов в строке тоже.
Заранее спасибо!

Добавлено через 14 часов 50 минут
А если, допустим, у меня куча памяти все такое.
Как создавать вектора в цикле? vec1, vec2 и тд
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2012, 14:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использовать значения двух строк из файла (C++):

Строка: Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк. - C++
Добавить в строковый класс функцию, которая создает строку, содержащую пересечение двух строк, то есть общие символы для двух строк....

Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? - C++
Вопрос такой, почему в методе setnamedisc нужно использовать char *s для установки значения, а при возвращении значения в методе...

Перестановка строк матрицы по возрастанию среднего значения строк - C++
Разработать программу для перестановки строк матрицы таким образом, чтобы средние значения по строкам возрастали от первой строки к...

Какие типы строк лучше использовать - C++
Недавно начал учить строки и увидел, что в С++, в отличии от Паскаля для каждого типа строк ( я нашёл только char,char*,string ) есть...

Как одну функцию использовать в двух проектах - C++
Есть функция которую нужно вызывать в двух проектах Я поместил ее в отдельный .cpp файл Проблема в том что в двух разных проектах...

Считать значения файла, найти их минимальное и максимальное значения - C++
5. Дан файл File_in.dat, содержащий 65536 целых чисел. Считать значения файла, найти их минимальное и максимальное значения. Результат...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2012, 16:06 #2
Зачем вы строки из файла читаете, если там числа (float)? В чём смысл?
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
17.11.2012, 19:14  [ТС] #3
Смысл в том, что каждая строка отдельный объект.

Добавлено через 24 секунды
Точнее его характеристика
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2012, 19:21 #4
Цитата Сообщение от Sor Посмотреть сообщение
Точнее его характеристика
Характеристика, что из себя представляет?

Добавлено через 2 минуты
В первом посте пишите, что данные - float. Зачем float читать как строку, а потом переводить строку в float? Может проще сразу читать как float?
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
17.11.2012, 19:37  [ТС] #5
Характеристика формы объекта, радиусы.
Данные float, записывались вот так:
C++
1
2
3
4
5
6
7
8
String where; //куда писать
where="D:\\"+String(rgnumber)+".txt";
ofstream file(where.c_str(),ofstream::out|ofstream::app);
 for (size_t i=0;i<rad.size();++i)   //записали все радиусы        
     {
      file<<rad[i]<<'\t';
     }
file<<endl;   //сменили строку
это что-то вроде базы данных. теперь мне нужно к каждой строке отдельно обращаться и я не знаю как.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.11.2012, 20:40 #6
Один объект имеете много радиусов, которые записываются в одной строке через '\t' ?

Если количество элементов в строке разное, то можно, при записи в файл, сначала записывать количество элементов в строке (rad.size()) и при чтении это значение использовать. Читать можно просто через оператор извлечения >> в переменную float, а потом помещать в вектор.
Если строки пронумерованы, то нужную можно находить перебором номеров и пропуском ненужных, используя, например, ignore() до '\n'.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2012, 20:40
Привет! Вот еще темы с ответами:

Какой способ конкатенации строк лучше использовать? - C++
Всем доброго времени суток. Я запутался с объединением строк на С++. Несколько классов про string запутывают как-то. Вот например есть...

Создать два файла целых чисел, первый содержит значения дней, а второй — значения месяцев - C++
File67. Дан строковый файл, содержащий даты в формате «день/месяц/год», причем под день и месяц отводится по две позиции, а под год —...

Использовать в задачах два класса строк: String и StringBuilder - C++
Здравстуйте, помогите пожалуйста написать эти 2 программы... 1). Составить программу, которая будет вводить строку в переменную String....

Обменяйте значения двух 32-х битных регистров между собой. Другие регистры использовать нельзя. - Assembler
Обменяйте значения двух 32-х битных регистров между собой. Другие регистры использовать нельзя. А как это реализовать без других...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.11.2012, 20:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru