Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с поиском в файле 
:(
    Опции темы
gosn1ck
Дата 2.6.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



задача состоит в том, чтобы найти определенную строку в файле и заменить ее.
к примеру мой файл содержит 
Код

1 Ivanov 1000 Sportivnaya 19.12.08
2 Petrov 2000 Moskovskii 02.02.08
3 Vasin 0 Pushka 02.02.09


как по поиску фамилии перейти к нужной строке и изменить следующее значение? 1000, 2000 или 0 соответственно.

фамилию нахожу вот так

Код

struct book
{
        char fam[256], data[256], adr[256];
        int nom, ostatok;
        book() {ostatok = 0;} ;
};

while(!fi.eof())
{
  fi>>mc.nom>>mc.fam>>mc.ostatok >> mc.adr >> mc.data;
    if (strcmp(mc.fam,search.fam) == 0)  break;
}

а изменить не знаю как...
PM MAIL ICQ   Вверх
azesmcar
Дата 2.6.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



gosn1ck

Не совсем понятно на что надо заменять? Подробнее о задаче.

Цитата(gosn1ck @  2.6.2009,  13:57 Найти цитируемый пост)
а изменить не знаю как... 

надо копировать в другой файл в уже измененном состоиянии.


Это сообщение отредактировал(а) azesmcar - 2.6.2009, 15:46
PM   Вверх
gosn1ck
Дата 2.6.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



содержимое файла
Код

1 Ivanov 1000 Sportivnaya 19.12.08
2 Petrov 2000 Moskovskii 02.02.08
3 Vasin 0 Pushka 02.02.09

надо ввести фамилию, например, Petrov и ввести число для сложения, например, 400.
результат должен быть таким:

Код

1 Ivanov 1000 Sportivnaya 19.12.08
2 Petrov 2400 Moskovskii 02.02.08
3 Vasin 0 Pushka 02.02.09

PM MAIL ICQ   Вверх
azesmcar
Дата 2.6.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Код

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <algorithm>

template <class T>
T from_string(const std::string& str)
{
    T v;
    if ((std::stringstream(str) >> v).fail())
        throw std::bad_cast("bad cast");
    return v;
}

template <class T>
std::string to_string(const T& v)
{
    std::stringstream iss;
    if ((iss << v).fail())
        throw std::bad_cast("bad cast");

    return iss.str();
}

int main()
{
    std::ifstream file_inp("c:\\downloads\\inp.txt");
    std::ofstream file_out("c:\\downloads\\out.txt");

    int add = 200;
    std::string srch = "Ivanov";

    std::string line;
    while (getline(file_inp, line))
    {
        std::string::size_type pos = line.find(srch);
        if (pos != std::string::npos)
        {
            std::string::iterator begin = line.begin() + pos + srch.size() + 1;
            std::string::iterator nextw = std::find(begin, line.end(), ' ');
            std::string::iterator end = begin + std::distance(begin, nextw);
            std::string temp = to_string<int>(from_string<int>(std::string(begin, end)) + add);
            line.replace(begin, end, temp);
        }
        std::cout << line << std::endl;
    }
    file_out.close();
    file_inp.close();
}



Это сообщение отредактировал(а) azesmcar - 2.6.2009, 16:23
PM   Вверх
gosn1ck
Дата 2.6.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 18.4.2009

Репутация: 1
Всего: 1



спасибо)) а как теперь inp.txt удалить, а out.txt переименовать в inp.txt?

Это сообщение отредактировал(а) gosn1ck - 2.6.2009, 17:12
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0823 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.