Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52

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

26.02.2013, 16:51. Показов 1100. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не записывается строка в файл в чем может быть причина ?

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();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.02.2013, 16:51
Ответы с готовыми решениями:

Не записывается в файл строка
Не могу понять, в чем проблема? Чтение из файла проходит успешно, а вот запись - нет. Мне нужно не перезаписать файл, а добавить в него...

Почему не записывается строка в файл?
Как мне закодированную строку записать в файл? Подскажите, пожалуйста. В этой строке bool result = fputs(str, file); // и записываем ее в...

Строка не записывается в файл, если в ней присутствуют пробелы
Делаю записную книгу на с++ в консоли (Code::Block) Все отлично работает если в каждую переменную вводить 1 слово без пробелов, если же...

10
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
26.02.2013, 16:59
если не ошибаюсь то не
cout << строка
а
f<<строка
1
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 19:06  [ТС]
Цитата Сообщение от Kill100 Посмотреть сообщение
если не ошибаюсь то не
cout << строка
а
f<<строка
не записывается пробовал

f<<str ;

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

Добавлено через 1 час 48 минут
ап...
0
73 / 73 / 12
Регистрация: 22.01.2013
Сообщений: 231
26.02.2013, 19:08
А можно полный код увидеть?
1
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 19:29  [ТС]
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;
    
}
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2013, 19:37
Добавлено через 3 минуты
В 41 строке закрываете фай. А открыть перед записью?

Добавлено через 2 минуты
И, наверное, скобок после else не хватает.
0
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 20:13  [ТС]
Спасибо, но результут тот же )
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 если нет то записывать их туда
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2013, 20:19
После чтения из файла, закрыть его, и открыть для записи. В else заход есть? "String added in file" на экран выводит?
1
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 20:42  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
После чтения из файла, закрыть его, и открыть для записи. В else заход есть? "String added in file" на экран выводит?
выводит , заход в else есть
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2013, 20:49
В 6 посте я написал, что нет открытия файла для записи. Не нужно было переносить закрытие файла. Нужно было добавить открытие для записи.

Добавлено через 2 минуты
Если файл открыт для чтения и записи, то, для перехода от чтения к записи, нужно или закрыть файл и открыть для записи, или указать (seekp) куда записывать.
1
1 / 1 / 0
Регистрация: 29.09.2012
Сообщений: 52
26.02.2013, 21:18  [ТС]
Спасибо большое да вы правы, решил проблему добавив в код из этого поста тык
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;
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2013, 21:18
Помогаю со студенческими работами здесь

Почему текстовая строка записывается с пробелами, а читается без?
Всем здравствуйте. std::ifstream in; std::ofstream out; void Button1_Click(void) { // Запись out.open(&quot;test.txt&quot;); ...

Информация не записывается в файл
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; char Otvet; string Text;...

В файл записывается мусор
Добрый вечер! Почему при записи в бинарный файл, в файл записывается мусор и соответственно читается из него тоже мусор? #define...

Структура не записывается в файл
Всем привет. Пытаюсь, значит, организовать работу с файлом в C++. Надо записать в smallfile.dat небольшую структуру, содержащую в себе поля...

Не записывается в бинарный файл
Переменные считываются, однако при записи в файл ничего не происходит int day; int month; int year; int price; int seatnum; int...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru