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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 453, средняя оценка - 4.72
milke
2 / 2 / 0
Регистрация: 12.01.2011
Сообщений: 14
#1

Удаление символа из строки - C++

27.01.2011, 16:49. Просмотров 64329. Ответов 31
Метки нет (Все метки)

Как удалить символ (скобку) в заданной символьной строке?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fra Dolcino
0 / 0 / 0
Регистрация: 09.08.2011
Сообщений: 4
09.08.2011, 12:13     Удаление символа из строки #21
diagon, спасибо! А есть вариант с выводом в тот же файл?
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
09.08.2011, 12:19     Удаление символа из строки #22
Fra Dolcino, а самому немножко подумать?
diagon
Higher
1924 / 1190 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.08.2011, 12:19     Удаление символа из строки #23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
int main(){
    std::fstream input("input.txt");
    std::string text, line;
    while (std::getline(input, line) )
        text += line;
    text.erase(std::remove(text.begin(), text.end(), '\\' ), text.end() );
    input.close();
    input.open("input.txt", std::fstream::out);
    input << text;
}
Это если заменить текст.
Если добавить в конец - замените на std::fstream::app
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,200
Записей в блоге: 1
Завершенные тесты: 1
09.08.2011, 12:40     Удаление символа из строки #24

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
Насколько я знаю, это отличительная особенность именно unix
Вообще-то я в Linux/*nix не силен, но я в Ubuntu менял эти настройки (точнее, как пишут в книгах, настройки драйвера терминала), так, чтоб символ '\n' это был именно переход на новую строку, а не переход и возврат каретки. А Ubuntu, как известно, это не Unix

.
Nameless One
09.08.2011, 12:55
  #25

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
так, чтоб символ '\n' это был именно переход на новую строку, а не переход и возврат каретки
ну так я и говорю, что в unix символ '\n' - это аналог "\r\n" в windows

Сыроежка
Заблокирован
09.08.2011, 15:09     Удаление символа из строки #26
Цитата Сообщение от Nameless One Посмотреть сообщение

Не по теме:


ну так я и говорю, что в unix символ '\n' - это аналог "\r\n" в windows

В С и в С++ - это один символ, называемый концом строки. При использовании стандартных функций вывода представление этого символа в выходном потоке является платформа-зависимым.
Bambaster01
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 50
06.04.2014, 23:27     Удаление символа из строки #27
Народ, а как тогда реализовать функцию, которая будет в строке сдвигать все знаки препинания в конец строки из файла?
smokeman
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 10
20.02.2016, 20:38     Удаление символа из строки #28
Цитата Сообщение от dr.curse Посмотреть сообщение
s.erase(i,1); // удаляет из строки символ с индексом i
а "1"-это количество удалённых символов?

Добавлено через 29 минут
Цитата Сообщение от Bambaster01 Посмотреть сообщение
Народ, а как тогда реализовать функцию, которая будет в строке сдвигать все знаки препинания в конец строки из файла?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 using namespace std;
 
  int main(){
    cout<<"VVedite soobshenie"<< endl;
    int i;
    string s;
    string tmp ="";
    cin>>s;
    for(i=0;i<s.size();i++){
    if (s[i] == '/' || s[i] == '.' || s[i] == ',' || s[i] == '-' || s[i] == '...'){
        tmp = s[i]+tmp;
        s = s.erase(i,1);
    }
    }
    s = s+ tmp;
    cout<<s;
  }
Если что не так,прости,писал на коленках
Павлина
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 8
17.01.2017, 18:27     Удаление символа из строки #29
Вопрос:если это не строка строго говоря, а массив символов?
Если присвоить символу значение /0, то все символы после него теряются?
MrGluck
Ворчун
Эксперт CЭксперт С++
6641 / 3832 / 504
Регистрация: 29.11.2010
Сообщений: 10,141
17.01.2017, 19:24     Удаление символа из строки #30
Цитата Сообщение от Павлина Посмотреть сообщение
Если присвоить символу значение /0, то все символы после него теряются?
'\0'
Нет, они остаются на месте, но стандартные сишные функции будут думать, что далее ничего не идёт, т.к. внутри их алгоритмов идёт проверка, что стоит двигаться до ноль-символа.

Не по теме:

Эх, какие люди были в треде.. Я уж обрадовался, пока дату не посмотрел.

Павлина
0 / 0 / 0
Регистрация: 19.05.2016
Сообщений: 8
19.01.2017, 16:55     Удаление символа из строки #31
Цитата Сообщение от MrGluck Посмотреть сообщение
'\0'
Нет, они остаются на месте, но стандартные сишные функции будут думать, что далее ничего не идёт, т.к. внутри их алгоритмов идёт проверка, что стоит двигаться до ноль-символа.
То есть, если вместо ноль-символа в таком случае что-нибудь подставить, то мы увидим дальнейшее содержимое строки?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2017, 17:04     Удаление символа из строки
Еще ссылки по теме:

C++ Копирование из строки от символа до символа
Создать строку: с начало три символа первой строки, потом эти же три символа в обратном порядке C++
C++ Удаление символа перевода строки из самого конца файла
Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа C++
Удаление символа из строки C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт CЭксперт С++
6641 / 3832 / 504
Регистрация: 29.11.2010
Сообщений: 10,141
19.01.2017, 17:04     Удаление символа из строки #32
Цитата Сообщение от Павлина Посмотреть сообщение
То есть, если вместо ноль-символа в таком случае что-нибудь подставить, то мы увидим дальнейшее содержимое строки?
Да. До следующего '\0'
Yandex
Объявления
19.01.2017, 17:04     Удаление символа из строки
Ответ Создать тему
Опции темы

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