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

Снятие чисел с каждой строки, вычитание и запись - C++

Восстановить пароль Регистрация
 
RAG20
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 19
03.04.2013, 23:20     Снятие чисел с каждой строки, вычитание и запись #1
Есть файл, где все строки имеют такую структуру

XML
1
    <object id="object (las2_lodbrigtower) (1)" interior="0" collisions="true" alpha="255" doublesided="true" model="5300" scale="1" dimension="0" background="" border="" foreground="" framesFaded="0" framesToFade="0" height="15" posX="111.75879" posY="4287.19629" posZ="1.77715" rotX="0" rotY="0" rotZ="0" state="hidden" text="Alpha Level" width="63" x="0" y="0"></object>
1. Снять данные с определенного участка в строке ( posY="4287.19629" )
2. из этого числа вычесть 5000
3. записать обратно результат (т.е. должно появится в строке вот это posY="-1287.19629")
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2013, 23:20     Снятие чисел с каждой строки, вычитание и запись
Посмотрите здесь:

нужна помощь. Сложение и вычитание больших чисел. C++
Считывание чисел, вычитание и запись в новый файл каждой строки C++
C++ В двумерном массиве 5*4 целых чисел найти сумму абсолютных значений элементов каждой строки
C++ В двумерном массиве 5*4 целых чисел найти сумму абсолютных значений элементов каждой строки
C++ Для каждой строки массива найдите среднее арифметическое положительных чётных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2861 / 1809 / 272
Регистрация: 27.08.2010
Сообщений: 4,893
Записей в блоге: 1
04.04.2013, 10:17     Снятие чисел с каждой строки, вычитание и запись #2
Изменение и сохранение текстового файла
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.04.2013, 10:46     Снятие чисел с каждой строки, вычитание и запись #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <string>
#include <fstream>
 
#include <boost/regex.hpp>
#include <boost/lexical_cast.hpp>
 
int main()
{
   const int diff = 5000;
   const boost::regex re("(posY=)\"(\\d+\\.\\d+)\"");
   std::ifstream ifs("file.txt");
   const std::string s((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
   ifs.close();
   std::ofstream ofs("file_new.txt");
   boost::smatch matches;
   std::string::const_iterator pos = s.begin();
   while (boost::regex_search(pos, s.end(), matches, re))
   {
      if (!matches.empty())
      {
         std::cout << "Finded: " << matches[0] << std::endl;
         const std::string val = matches[2].str();
         double value = boost::lexical_cast<double>(val);
         value -= diff;
         ofs << matches[1] << "\"" << value << "\"" << std::endl;
         pos = matches[0].second;
      }
   }
   ofs.close();
}
Можно конечно и не считывать, а искать на лету.
Bash
1
2
3
4
5
6
7
8
9
10
forever@pterois:~/My_pro1/cpp_pro$ cat file.txt 
<object id="object (las2_lodbrigtower) (1)" interior="0" collisions="true" alpha="255" doublesided="true" model="5300" scale="1" dimension="0" background="" border="" foreground="" framesFaded="0" framesToFade="0" height="15" posX="111.75879" posY="4287.19629" posZ="1.77715" rotX="0" rotY="0" rotZ="0" state="hidden" text="Alpha Level" width="63" x="0" y="0"></object><object id="object (las2_lodbrigtower) (1)" interior="0" collisions="true" alpha="255" doublesided="true" model="5300" scale="1" dimension="0" background="" border="" foreground="" framesFaded="0" framesToFade="0" height="15" posX="111.75879" posY="4250.19629" posZ="1.77715" rotX="0" rotY="0" rotZ="0" state="hidden" text="Alpha Level" width="63" x="0" y="0"></object>
 
forever@pterois:~/My_pro1/cpp_pro$ ./new
Finded: posY="4287.19629"
Finded: posY="4250.19629"
 
forever@pterois:~/My_pro1/cpp_pro$ cat file_new.txt 
posY="-712.804"
posY="-749.804"
RAG20
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 19
04.04.2013, 16:06  [ТС]     Снятие чисел с каждой строки, вычитание и запись #4
Было бы неплохо еще выяснить один вопрос:
Я пробую компилировать в Dev-C++ и компилятор выдает что не удается найти указанный файл.

Указывал путь в C:\ и создал документ, в который код должен сэйвить. Также кинул туда документ из которого код должен считывать.

Может стоит попробовать на другой платформе?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.04.2013, 16:27     Снятие чисел с каждой строки, вычитание и запись #5
RAG20, Какой указанный файл? Перепишите пути, как вам удобно, в чем трабл?
RAG20
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 19
04.04.2013, 18:45  [ТС]     Снятие чисел с каждой строки, вычитание и запись #6
std::ifstream ifs("file.txt"); это как я понял строка где есть путь к исходному файлу с не измененными значениями posY

std::ofstream ofs("file_new.txt"); это как я понял строка создания нового документа, с измененым значение posY

Указывал свой путь к обоим файлам, не содержащий русских символов и пробелов, т.е. тупо закинул в C:/
Расширения соблюдал
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.04.2013, 18:47     Снятие чисел с каждой строки, вычитание и запись #7
RAG20, А ошибку то я угадать должен?)
RAG20
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 19
04.04.2013, 18:51  [ТС]     Снятие чисел с каждой строки, вычитание и запись #8
Ну так мне просто и говорит

Не удается найти указанный файл

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.04.2013, 19:55     Снятие чисел с каждой строки, вычитание и запись #9
RAG20, Какой указанный файл? У вас буст установлен? Код компилируется или нет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2013, 21:43     Снятие чисел с каждой строки, вычитание и запись
Еще ссылки по теме:

Вычитание в двоичной системе счисления двух чисел C++
Вычитание чисел в двоичной системе счисления C++
C++ Создать файл целых чисел содержащий сумму чисел из каждой строки исходной таблицы

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

Или воспользуйтесь поиском по форуму:
RAG20
0 / 0 / 0
Регистрация: 30.03.2013
Сообщений: 19
04.04.2013, 21:43  [ТС]     Снятие чисел с каждой строки, вычитание и запись #10
Не компилируется. В компилятор выходит "Не удается найти указанный файл"! Больше ничего. Попробовал убрать инклуды на буст. Та же ошибка
Yandex
Объявления
04.04.2013, 21:43     Снятие чисел с каждой строки, вычитание и запись
Ответ Создать тему
Опции темы

Текущее время: 13:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru