2014 dxdy logo

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

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




 
 Си++как брать исходные данные из файла
Сообщение14.05.2012, 20:10 
Си++ Подскажите пожалуйста.

ОС: 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 
Читая нечётную строку, запоминаете имя, которое там было. Читая чётную строку, глядите по запомненному имени, куда это записать.

 
 
 
 Re: Си++как брать исходные данные из файла
Сообщение19.05.2012, 00:08 
Аватара пользователя
 i  Pavel077, при размещении исходных текстов программ пользуйтесь, пожалуйста, тегом syntax: Как подсвечивать синтаксис?.
Добавил.

 
 
 
 Re: Си++как брать исходные данные из файла
Сообщение19.05.2012, 11:43 
Используется синтаксис Bash
man sed

 
 
 
 Re: Си++как брать исходные данные из файла
Сообщение21.05.2012, 11:28 
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 
Честно говоря, я предложил sed в шутку. Думал, тут надо решить ИМЕННО на C++ (ну, мало ли, что зададут в вузе или где ещё).
Но раз sed тоже сгодится, см. о нём тут

 
 
 
 Re: Си++как брать исходные данные из файла
Сообщение06.06.2012, 10:32 
вот есть такое -но как это прикрутить к моей программе ????? уже сломал голову, ПОМОГИТЕ

Код 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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group