Си++ Подскажите пожалуйста.
ОС: 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)
МОЙ КОД:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <conio.h>
#include <iostream>
#include <fstream>
#include <ctype.h>
using namespace std;
void str_replacew(string& str, const char* sub, const char* snew) {
string::size_type pos = 0;
int id, len = strlen(sub);
while((pos = str.find(sub, pos)) != string::npos) {
id = (pos > 0) ? isalpha(str[pos-1]) : 0;
if(! id && ! isalpha(str[pos + len]) )
str.replace(pos, len, snew);
pos++;
}
}
int main(void)
{
int a,b,c, x,y,z;
cout << "a: ";
cin >> a;
cout << "b: ";
cin >> b;
c=a+b;
x=c+a;
y=c+b;
z=a+b+c;
//cout << " x: " << x << endl;
//cout << " y: " << y << endl;
//cout << " z: " << z << endl;
char fname[] = "text.txt";
char fstr[] = "x";
char nstr[] = "ananas";
fstream fp(fname, fstream::in);
if(! fp.is_open())
return 1;
string buf, line;
while(! fp.eof()) {
getline(fp, line, '\n');
str_replacew(line, fstr, nstr);
buf += line + '\n';
}
fp.close();
fp.clear();
fp.open(fname, fstream::out | fstream::trunc);
fp.write(buf.c_str(), buf.length());
fp.flush();
fp.close();
return 0;
}