2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Си++как брать исходные данные из файла
Сообщение14.05.2012, 20:10 


14/05/12
3
Си++ Подскажите пожалуйста.

ОС: Windows
Компилятор: Dev-C++4.9.9.2

здравствуйте, уважаемые форумчане,
подскажите плиз :
1).Есть файл text.txt
в текстовом файле text.txt :
яблоко
x
груша
y
вишня
z

2). МОЙ КОД вычисляет х, y ,z (х=234) и прога должна их записать в в файл rezult.txt (или загнать в буфер)
3).Затем программа должна из файла rezult.txt (или из буфера) результаты прочитать и в файле text.txt заменить значения (моя программа значения меняет, но вместо строк

46 char fname[] = "text.txt";
47
48 char fstr[] = "x";
49 char nstr[] = "234"; //в моей программе "ananas"

как сделать чтобы брать исходные данные и новые данные из ФАЙЛА rezult.txt (или из буфера) ?????????????
3). Должно получиться - файл с новым именем (text2.txt)и:
яблоко
234(вместо x)
груша
123 (вместо y)
вишня
789(вместо z)

МОЙ КОД:
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
  1. #include <stdio.h>  
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <conio.h>
  6. #include <iostream>
  7. #include <fstream>
  8. #include <ctype.h>
  9.  
  10. using namespace std;
  11.  
  12. void  str_replacew(string& str, const char* sub, const char* snew) {
  13.   string::size_type pos = 0;
  14.   int id, len = strlen(sub);
  15.   while((pos = str.find(sub, pos)) != string::npos) {
  16.        id = (pos > 0) ? isalpha(str[pos-1]) : 0;
  17.        if(! id && ! isalpha(str[pos + len]) )
  18.             str.replace(pos, len, snew);
  19.        pos++;
  20.    }
  21. }
  22. int main(void)
  23. {
  24. int a,b,c, x,y,z;                
  25.  
  26. cout << "a: ";  
  27. cin >> a;
  28.  
  29. cout << "b: ";
  30. cin >> b;
  31.  
  32. c=a+b;
  33. x=c+a;
  34. y=c+b;
  35. z=a+b+c;
  36.  
  37.  
  38. //cout << " x: " << x << endl;
  39. //cout << " y: " << y << endl;
  40. //cout << " z: " << z << endl;
  41.  
  42.  
  43. char fname[] = "text.txt";
  44.  
  45.   char fstr[] = "x";  
  46.   char nstr[] = "ananas";  
  47.  
  48.   fstream fp(fname, fstream::in);
  49.   if(! fp.is_open())
  50.        return 1;
  51.   string buf, line;
  52.  
  53.   while(! fp.eof()) {
  54.        getline(fp, line, '\n');
  55.        str_replacew(line, fstr, nstr);
  56.        buf += line + '\n';
  57.   }
  58.   fp.close();
  59.   fp.clear();
  60.  
  61.   fp.open(fname, fstream::out | fstream::trunc);
  62.   fp.write(buf.c_str(), buf.length());
  63.   fp.flush();
  64.   fp.close();
  65.   return 0;
  66.  
  67. }

 Профиль  
                  
 
 Re: Си++как брать исходные данные из файла
Сообщение18.05.2012, 23:51 
Заслуженный участник


27/04/09
28128
Читая нечётную строку, запоминаете имя, которое там было. Читая чётную строку, глядите по запомненному имени, куда это записать.

 Профиль  
                  
 
 Re: Си++как брать исходные данные из файла
Сообщение19.05.2012, 00:08 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Pavel077, при размещении исходных текстов программ пользуйтесь, пожалуйста, тегом syntax: Как подсвечивать синтаксис?.
Добавил.

 Профиль  
                  
 
 Re: Си++как брать исходные данные из файла
Сообщение19.05.2012, 11:43 


04/06/10
117
Используется синтаксис Bash
man sed

 Профиль  
                  
 
 Re: Си++как брать исходные данные из файла
Сообщение21.05.2012, 11:28 


14/05/12
3
arseniiv и wolf.ram спасибо за советы!
В моей программе:

46 char fname[] = "text.txt";
47
48 char fstr[] = "x";
49 char nstr[] = "234"; //в моей программе "ananas",

а в SED:

sed' /foo/s/foo/bar/g' filename
я хочу, чтобы bar была переменной (x,y,z)-234,123,789 и т.д.????????????
не понимаю как это сделать...

 Профиль  
                  
 
 Re: Си++как брать исходные данные из файла
Сообщение21.05.2012, 13:25 


04/06/10
117
Честно говоря, я предложил sed в шутку. Думал, тут надо решить ИМЕННО на C++ (ну, мало ли, что зададут в вузе или где ещё).
Но раз sed тоже сгодится, см. о нём тут

 Профиль  
                  
 
 Re: Си++как брать исходные данные из файла
Сообщение06.06.2012, 10:32 


14/05/12
3
вот есть такое -но как это прикрутить к моей программе ????? уже сломал голову, ПОМОГИТЕ

Код C++

#include <iostream>
#include <sstream>
#include <string>

int main(){
int n = 1234;
//Число в строку
std::ostringstream ost;
ost << n;
std::string s_num = ost.str();
std::cout << s_num << "\n\n";
n = 0;
//Строка в число
std::istringstream ist(s_num);
ist >> n;
std::cout << n;
return 0;
}

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group