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

Не записывается строка в файл - C++

Восстановить пароль Регистрация
 
snake5129x
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 16:51     Не записывается строка в файл #1
Не записывается строка в файл в чем может быть причина ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fstream f("work_mem.txt", ios::in | ios::out);//
        //---------------------------------------------------------
        if ( ! f.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
         }
        //----------------------------------------------------------
 if (!f.eof())
               getline(f, str1); 
                  if ( str1.find(str) != std::string::npos )
                   cout <<"String exists in File "<< str1<<endl;
                 else 
                 memf<<str;
                 cout << "String added in file"<<endl;
                 f.close();
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kill100
 Аватар для Kill100
360 / 249 / 33
Регистрация: 11.12.2010
Сообщений: 1,069
Завершенные тесты: 1
26.02.2013, 16:59     Не записывается строка в файл #2
если не ошибаюсь то не
cout << строка
а
f<<строка
snake5129x
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 19:06  [ТС]     Не записывается строка в файл #3
Цитата Сообщение от Kill100 Посмотреть сообщение
если не ошибаюсь то не
cout << строка
а
f<<строка
не записывается пробовал

f<<str ;

может есть еще какие то идеи ?

Добавлено через 1 час 48 минут
ап...
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
26.02.2013, 19:08     Не записывается строка в файл #4
А можно полный код увидеть?
snake5129x
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 19:29  [ТС]     Не записывается строка в файл #5
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
using namespace std;
 int main()
{
    ifstream in("rules.txt");//тут файл, который нужен
    //-------------------------------------------------
    if ( ! in.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
    }
    //----------------------------------------------
    string str ,str1,str2;
    int locate; //положение позиции курсора 
    int cnt;
 
    if (!in.eof())
    getline(in,str);//считали первую строку
    in.close(); //закрыли входной файл
    
    int posIf = str.find("if");//определяем позиц 
    int posEnd = str.find("and");//определяем позиц 
    int posThen = str.find("then");//определяем позиц 
        str.resize(posEnd-1);//удаляем and в конце строки
        str.erase(posIf,3);//удаляем if в начале стр
        
        fstream memf("work_mem.txt", ios::in | ios::out);//файл памяти 
        //---------------------------------------------------------
        if ( ! memf.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
         }
        //-----------------------------------------------------------
              if (!memf.eof())
               getline(memf, str1); 
                  if ( str1.find(str) != std::string::npos )
                   cout <<"String exists in MEMORY "<< str1<<endl;
                 else 
                 memf.close();
                 cout << "String added in file"<<endl;
                 memf<<str;
 
    system("PAUSE");
    return 0;
    
}
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2013, 19:37     Не записывается строка в файл #6
Добавлено через 3 минуты
В 41 строке закрываете фай. А открыть перед записью?

Добавлено через 2 минуты
И, наверное, скобок после else не хватает.
snake5129x
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 20:13  [ТС]     Не записывается строка в файл #7
Спасибо, но результут тот же )
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
using namespace std;
 int main()
{
    ifstream in("rules.txt");//ГІГіГІ ГґГ*éë, êîòîðûé Г*óæåГ*
    //-------------------------------------------------
    if ( ! in.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
    }
    //----------------------------------------------
    string str ,str1,str2;
    int locate; //ïîëîæåГ*ГЁГҐ ïîçèöèè êóðñîðГ* 
    int cnt;
 
    if (!in.eof())
    getline(in,str);//Г±Г·ГЁГІГ*ëè ïåðâóþ ñòðîêó
    in.close(); //Г§Г*êðûëè âõîäГ*îé ГґГ*éë
    
    int posIf = str.find("if");//îïðåäåëÿåì ïîçèö 
    int posEnd = str.find("and");//îïðåäåëÿåì ïîçèö 
    int posThen = str.find("then");//îïðåäåëÿåì ïîçèö 
        str.resize(posEnd-1);//ГіГ¤Г*ëÿåì and Гў ГЄГ®Г*öå ñòðîêè
        str.erase(posIf,3);//ГіГ¤Г*ëÿåì if Гў Г*Г*Г·Г*ëå Г±ГІГ°
        
        fstream memf("work_mem.txt", ios::in | ios::out);//ГґГ*éë ГЇГ*ìÿòè 
        //---------------------------------------------------------
        if ( ! memf.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
         }
        //-----------------------------------------------------------
              if (!memf.eof())
               getline(memf, str1); 
                  if ( str1.find(str) != std::string::npos )
                   cout <<"String exists in MEMORY "<< str1<<endl;
                 else {
                 memf << str;
                 cout << "String added in file"<<endl;
                 memf.close();
                 }
                    
                    
    cout<<str<<endl;
    
    system("PAUSE");
    return 0;
    
}
Если кратко то программа должна находить выражения между if else and и сверать есть ли они в файле work_mem.txt если нет то записывать их туда
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2013, 20:19     Не записывается строка в файл #8
После чтения из файла, закрыть его, и открыть для записи. В else заход есть? "String added in file" на экран выводит?
snake5129x
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 20:42  [ТС]     Не записывается строка в файл #9
Цитата Сообщение от alsav22 Посмотреть сообщение
После чтения из файла, закрыть его, и открыть для записи. В else заход есть? "String added in file" на экран выводит?
выводит , заход в else есть
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2013, 20:49     Не записывается строка в файл #10
В 6 посте я написал, что нет открытия файла для записи. Не нужно было переносить закрытие файла. Нужно было добавить открытие для записи.

Добавлено через 2 минуты
Если файл открыт для чтения и записи, то, для перехода от чтения к записи, нужно или закрыть файл и открыть для записи, или указать (seekp) куда записывать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2013, 21:18     Не записывается строка в файл
Еще ссылки по теме:

Строка не записывается в файл, если в ней присутствуют пробелы C++
В файл записывается мусор C++
Не всё записывается в файл. Ничего не понимаю C++
C++ Структура не записывается в файл
C++ Результат не записывается в файл

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

Или воспользуйтесь поиском по форуму:
snake5129x
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 21:18  [ТС]     Не записывается строка в файл #11
Спасибо большое да вы правы, решил проблему добавив в код из этого поста тык
C++
1
2
if(fs.eof())
        fs.clear();
+ добавил seekp как вы сказали

Выкладываю готовый код может кому - то пригодится
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
using namespace std;
 int main()
{
    ifstream in("rules.txt");//ГІГіГІ ГґГ*éë, êîòîðûé Г*óæåГ*
    //-------------------------------------------------
    if ( ! in.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
    }
    //----------------------------------------------
    string str ,str1,str2;
    int locate; //ïîëîæåГ*ГЁГҐ ïîçèöèè êóðñîðГ* 
    int cnt;
 
    if (!in.eof())
    getline(in,str);//Г±Г·ГЁГІГ*ëè ïåðâóþ ñòðîêó
    in.close(); //Г§Г*êðûëè âõîäГ*îé ГґГ*éë
    
    int posIf = str.find("if");//îïðåäåëÿåì ïîçèö 
    int posEnd = str.find("and");//îïðåäåëÿåì ïîçèö 
    int posThen = str.find("then");//îïðåäåëÿåì ïîçèö 
        str.resize(posEnd-1);//ГіГ¤Г*ëÿåì and Гў ГЄГ®Г*öå ñòðîêè
        str.erase(posIf,3);//ГіГ¤Г*ëÿåì if Гў Г*Г*Г·Г*ëå Г±ГІГ°
        
        fstream memf("work_mem.txt", ios::in | ios::out);//ГґГ*éë ГЇГ*ìÿòè 
        //---------------------------------------------------------
        if ( ! memf.is_open() ){
        std::cerr << "Can't open file!" << std::endl;
        return 1;
         }
        //-----------------------------------------------------------
              if (!memf.eof())
               getline(memf, str1); 
                if(memf.eof())
                  memf.clear();
                  if ( str1.find(str) != std::string::npos )
                   cout <<"String exists in MEMORY "<< str1<<endl;
                 else {
                 memf.seekp(memf.tellg());
                 memf << str;
                 cout << "String added in file"<<endl;
                 memf.close();
                 }
                    
                    
    cout<<str<<endl;
    
    system("PAUSE");
    return 0;
    
}
Yandex
Объявления
26.02.2013, 21:18     Не записывается строка в файл
Ответ Создать тему
Опции темы

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