Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
1

Замена пробела на '_' в файле

21.07.2017, 13:40. Показов 4646. Ответов 23
Метки нет (Все метки)

Здравствуйте, я пытаюсь заменить в файле все пробелы знаком " _ ", но замена не происходит. Количество всех символов и количество пробелов - не известно. Помогите пожалуйста.
Тупой вопрос: Как работать с тегами для вставки кода?
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
#include <iostream>                                                                    // Не пугайтесь если найдете лишнее.
#include <windows.h>
#include <fstream>
#include <cstdio> 
#include <conio.h>
#include <string>
 
using namespace std;
int main(int argc, char* argv[])
{ 
    remove("Temp.txt");                                                             //Если файл существует, то он удаляется.
    fstream Temp; 
    int d;
    char f[200];
    d = 0;
    Temp.open("Temp.txt", ios::out);                                          //Создаю
    Temp.close();                                                                      // файл
    system("Temp.txt");                                                            // Запускаю файл, для ввода символов.
    Temp.open("Temp.txt", ios::binary);                                     // Открываю файл в бинарном режиме.
    while (!Temp.eof)
    {
        Temp >> f[d];                                                            // Записываю в массив  символы.
        if (f[d] == ' ')                                                             // Ищу символ равный пробелу.
        {
            f[d] = '_';                                                           //Замена пробела в массиве на знак '_'.
            Temp << f[d];                                                    // Замена в файле .
        }
        d++;
    };
    system("pause");
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2017, 13:40
Ответы с готовыми решениями:

Замена пробела в строке на подчеркивание
Мне нужна функция которая заменяет пробел на подчеркивание то есть &quot;Как дела?&quot; он превращает в...

Замена символа пробела на заданную строку
здрасти, со строками у меня как то плохо все, как заменить все символы пробелов на строку &quot; !##! ...

Написать программу, удаляющую символы пробела в файле
Написать пррограмму на С++, где Символьный файл содержит пробелы. Сжать этот файл (убрать пробелы).

Смешанное хранение данных в файле: Не удается считать символ пробела (или его отсутствие) после числа
Здравствуйте, есть вот что: Файл, который содержит числа в 16-ричной форме (32 битные адреса) на...

23
YarRainbow
21.07.2017, 13:49
  #2

Не по теме:

Цитата Сообщение от Alex_Jet Посмотреть сообщение
Как работать с тегами для вставки кода?
Замена пробела на  '_' в файле

Куча кнопочек на все случае жизни. Выделяете код, жмете кнопку, он сам его обрамляет в тег.
В общем должно выглядеть как
Код
[CPP]Здесь ваш код C++[/CPP]

0
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
21.07.2017, 13:57  [ТС] 3
YarRainbow,спасибо
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.07.2017, 13:58 4
Alex_Jet, и что не так? Ошибки вылетают или зависает или что?
0
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
21.07.2017, 14:02  [ТС] 5
Azazel-San, просто не меняет пробел на '_' (файл как содержал пробел, так и содержит).
0
зомбяк
1532 / 1177 / 332
Регистрация: 14.05.2017
Сообщений: 3,822
21.07.2017, 14:04 6
Цитата Сообщение от Alex_Jet Посмотреть сообщение
int main(int argc, char* argv[])
{
remove("Temp.txt"); //Если файл существует, то он удаляется.
Это такой прикол - создал файл с данными, а программа сразу после запуска его удаляет. Это чтоб данные гарантированно не начали обрабатываться ?
0
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
21.07.2017, 14:10  [ТС] 7
TRam, У меня программа запускается не один раз, чтобы мне самому не удалять его, то при запуске он удаляется, а потом опять создается. Так я больше уверен, что файл не используется зависшей фоновой cmd.
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.07.2017, 14:11 8
Цитата Сообщение от TRam_ Посмотреть сообщение
Это такой прикол - создал файл с данными, а программа сразу после запуска его удаляет. Это чтоб данные гарантированно не начали обрабатываться ?
это типо должна была быть проверка на то существует ли уже такой файл.. но..
0
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
21.07.2017, 14:12  [ТС] 9
Azazel-San,У меня программа запускается не один раз, чтобы мне самому не удалять его, то при запуске он удаляется, а потом опять создается. Так я больше уверен, что файл не используется зависшей фоновой cmd.
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.07.2017, 14:22 10
Alex_Jet, и что оно удаляет?
0
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
21.07.2017, 14:26  [ТС] 11
Azazel-San, Файл находиться там же где и программа, указывать путь не обязательно.
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.07.2017, 14:36 12
Alex_Jet, ладно, не важно
C++
1
2
ifstream input("файл"); //для считывания
ofstream out("файл"); //для записи
и зачем в бинарник пишите?
0
1 / 1 / 0
Регистрация: 20.07.2017
Сообщений: 19
21.07.2017, 14:52 13
Ой че-то странное делаешь. Удаление файла, создание его заново, он ведь у тебя пустой должен быть при создании, что же там заменять? Ребята сверху не допытались ответа, ну да ладно.
Temp >> f[d]; - Ты случаем не первый символ из потока толкаешь? Да и запись в поток идет сразу после предполагаемого символа. Может проще считать файл в буффер, там намутить делов и перезаписать файл?
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.07.2017, 14:59 14
Цитата Сообщение от novice07 Посмотреть сообщение
Может проще считать файл в буффер
проще использовать string и
Код
replace(str.begin(), str.end(), ' ', '_');
0
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
21.07.2017, 15:21  [ТС] 15
Всем спасибо, уже разобрался!!
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.07.2017, 15:22 16
Alex_Jet, и что помогло?
0
nd2
3416 / 2796 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
21.07.2017, 15:28 17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    fstream Temp("Temp.txt", ios::in | ios::out | ios::binary);
    if (!Temp)
    {
        cout << "Error opening file!" << endl;
        system("pause");
        return 0;
    }
    char f;
    while (Temp.get(f))
    {
         if (f == ' ') 
         {
             Temp.seekg(-1, ios::cur);
             Temp << '_';
             Temp.flush();
         }
    }
    system("pause");
    return 0;
0
824 / 627 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
21.07.2017, 15:31 18
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
#include <iostream>
#include <sstream>
#include <fstream>
#include <iterator>
#include <algorithm>
 
void file_replace(const char* filename, char old, char ch){
    std::fstream fp(filename, std::fstream::in);
    if(! fp.is_open())
        return;
    std::stringstream os;
    std::replace_copy(std::istreambuf_iterator<char>(fp), std::istreambuf_iterator<char>(),
                      std::ostreambuf_iterator<char>(os), old, ch);
    fp.close();
    fp.open(filename, std::fstream::out);
    if(fp.is_open()){
        std::copy(std::istreambuf_iterator<char>(os), std::istreambuf_iterator<char>(), 
                  std::ostreambuf_iterator<char>(fp));
        fp.close();
    }
}
 
int main(void){
    file_replace("file.txt", ' ', '_');
    std::cin.get();
    return 0;
}
0
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 14
24.07.2017, 18:16  [ТС] 19
Вот мой мое решение моей же проблемы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
                                                                                        Temp1.open("Temp.jpd", ios::trunc | ios::out | ios::in);
                                            Temp.open("EncIn.txt", ios::trunc | ios::out);
                                            Temp.close();
                                            system("EncIn.txt");
                                            Temp.open("EncIn.txt");
                                            h = 0;
                                            while (!Temp.eof())
                                            {
                                                Temp >> A;
                                                A == "";
                                                Temp1 << A << " ";
                                                h++;
                                            }
                                            Temp.close();
                                            remove("EncIn.txt");
                                            Temp1.close();
                                             //дальше уже не по теме
Добавлено через 4 минуты
novice07, удаление файла - вынужденная мера, из-за ошибок при компиляции в диспетчере задач появляются процессы, которые не дают работать с файлом
0
nd2
3416 / 2796 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
24.07.2017, 22:54 20
Цитата Сообщение от Alex_Jet Посмотреть сообщение
Вот мой мое решение моей же проблемы.
Цитата Сообщение от Alex_Jet Посмотреть сообщение
C++
1
2
3
4
5
6
7
while (!Temp.eof()) 
{ 
     Temp >> A; 
     A == ""; 
     Temp1 << A << " "; 
     h++; 
}
Бред.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.07.2017, 22:54

Замена слов в файле
Помогите, пожалуйста, исправить код. Нужно : 1. Чтобы замена производилась независимо от...

Замена символов в файле
кто нибудь может написать код программы : с консоли ввести путь к файлу и задать три группы по два...

Замена байтов в файле
Есть программа написанная на MFC, вопрос как можно реализовать смену байтов в файле который она...

Замена строки в файле
Помогите, пожалуйста, с алгоритмом или кодом решения следующей проблемы (на С или С++): есть...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.