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

Не выходит корректно работать с fstream - C++

Восстановить пароль Регистрация
 
124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
22.10.2010, 00:02     Не выходит корректно работать с fstream #1
смысл программы: она открывает файл, как только видит значок комментариев с++ /* должна удалять весь комментарий.
Проблема в том, что как только прога заметила этот значок, она сразу же должна удалять/заменять на пробел по символу и проверять, не был ли символ значком закрывающим комментарий.
я это хотел реализовать откручиванием каретки назад на две позиции и вместо in.seekp((int)in.tellp()-2) и записью in<<' '; in<<' ';
но почему-то пробелы не записываются и проге вообще сносит крышу

и еще, если можно, объясните как на in<<' '; влияет пред ним стоящий cout и почему если его убрать, то проге сносит крышу подругому?, /; .. я жутко зол и не понимаю, как моя клава после стольких ударов еще работает..


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
#include <iostream>
#include <fstream>
 
int main()
{
    using namespace std;
    
    fstream in("test.in");
    char n;
 
 
      while(!in.eof()){ 
       in >> n;
 
       if (n=='/'){
                   in >> n;
                   if  (n=='*') {
                        
                       //in.seekp((int)in.tellp()-2) ;
                       // cout << in.tellp();
                       //n<<' '; in<<' ';
                     
                        do { in >> n;
 
 
                               
 
 
                             } 
                                     
                                 while (n!='/');
                                 
                                 }
                                 } 
                                 }                        
    cin.get();
}
Добавлено через 30 минут
хочу только через fstream.. я себя съем!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2010, 00:02     Не выходит корректно работать с fstream
Посмотрите здесь:

FStream C++
C++ fstream
C++ fstream
<fstream> C++
Почему когда в рабочую программу вставляю setlocale(LC_ALL, "Rus"); она перестает корректно работать C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
22.10.2010, 01:47     Не выходит корректно работать с fstream #2
124bit, при открытии через fstream подразумевается как запись так и чтение, что именно Вам нужно компилятору неведомо. используйте хотя бы флаги...
fstream in("test.in", ios::in|ios::out);
124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
22.10.2010, 09:34  [ТС]     Не выходит корректно работать с fstream #3
так вроде все правильно, мне нужно и то и то... и читать и если надо откатывать каретку назад и записывать... потом читать дальше
а он записывать не хочет.. или надо кроме открытия еще где-то флаг поставить,?


или нельзя и читать и записывать,?
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
22.10.2010, 11:57     Не выходит корректно работать с fstream #4
можно, но поставьте хотя бы флаги ios::in - открыть на чтение и ios::out - открыть как выходной. и не мешало бы добавить ios::ate - переводит точку ввода в конец файла, но есть возможность вводить новые данные в любом месте файла.
124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
22.10.2010, 12:27  [ТС]     Не выходит корректно работать с fstream #5
так вроде ios_base::in | ios_base::out по умолчанию

C++
1
2
3
4
http://www.cplusplus.com/reference/iostream/fstream/fstream/
fstream ( );
explicit fstream ( const char * filename,
                   ios_base::openmode mode = ios_base::in | ios_base::out );
а ios_base:: app что делает,? мне ж надо не в самый конец файла символ вставлять, а там где in.tellg()

вообще основная проблема в том, что операторы
in.seekg((int)in.tellg()-2);
in << ' ';

НЕ хочет вставлять пробел на положение заданное seekg, а делает вообще что-то непонятно что, и я не могу понять почему.
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
22.10.2010, 15:46     Не выходит корректно работать с fstream #6
а если так?
C++
1
2
3
4
5
6
7
8
    fstream in ("test.in", ios::in|ios::out|ios::ate);
    in.seekg(0);
    in.seekp(0);
 
//  какието действия
 
    in.seekp(int(in.tellp()) - 2*sizeof(char));
    in << ' ';// либо  in << ends;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2010, 03:22     Не выходит корректно работать с fstream
Еще ссылки по теме:

fstream и for C++
C++ Насколько корректно будет работать замыкание?
C++ Корректно ли будет работать функция realloc в пользовательском классе массива

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

Или воспользуйтесь поиском по форуму:
124bit
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17
23.10.2010, 03:22  [ТС]     Не выходит корректно работать с fstream #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
#include <iostream>
#include <fstream>
   using namespace std; 
int main()
{
 
    
    fstream in("test.txt",ios::in|ios::out|ios::ate);
    char n='1';
    
    
    
    cout <<"N"<< n << "P"<< in.tellp() << "G" << in.tellg() << endl;
     
     
    in.seekg(0);
    in.seekp(0);
    cout <<"N"<< n << "P"<< in.tellp() << "G" << in.tellg() << endl;   
 
 
 
 
    
    in >> n;
    cout <<"N"<< n << "P"<< in.tellp() << "G" << in.tellg() << endl;
    in >> n;
    cout <<"N"<< n << "P"<< in.tellp() << "G" << in.tellg() << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
test.txt
C++
1
asdfsdafs   /*  */
оно мне все три раза по три одно и тоже выводит.. что и теллг и телл п =1... даже после установки сикп и сикг
блин, ну что за галиматья..(( кто объяснит, чего так,?
ну что это за галиматья(( кто объяснит
Yandex
Объявления
23.10.2010, 03:22     Не выходит корректно работать с fstream
Ответ Создать тему
Опции темы

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