Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: замена символов в файле (с++)  (Прочитано 3443 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
замена символов в файле (с++)
« : 12 Ноября 2015, 23:08:42 »
В общем, нужно из одного файла переместить всё содержимое в другой, попутно заменяя перенос строк на двоеточие.
Я делаю так:
Код: (cpp) [Выделить]
ifstream in("IP.txt");
ofstream out("IPv.txt");


char s;
while(!in.eof())
{
in >> s;
if(s == '\n') s = ':';
out << s;
}
, в результате чего переносы строк убираются, но двоеточия не появляются. Что я не так делаю?
« Последнее редактирование: 07 Февраля 2016, 00:14:49 от Гриб_под_зонтом »
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5663
  • Все по палатам!
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #1 : 12 Ноября 2015, 23:18:55 »
А конец строки 1 байт? В хекс редакторе посмотри
Извините, я все еще учусь

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #2 : 13 Ноября 2015, 00:29:47 »
Гриб_под_зонтом, для таких целей подходят sed, perl, но c++ очень вряд ли.
Код: (bash) [Выделить]
cat IP.txt | sed 's/\n/:/g' > IPv.txtЗЫ где создавался файл? У винды/мака иные мнения насчёт переноса строки.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #3 : 13 Ноября 2015, 13:19:22 »
alsoijw, а-я-я-й! Ну никак sed'ом не получится вот так убрать переводы строк! Sed — это строковый редактор. Лучше всего для одного символа — tr
Код: (bash) [Выделить]
tr '\n' ':' <IP.txt > IPv.txtКонечно, sed'ом тоже можно, но слегка "поизвращавшись"
Код: (bash) [Выделить]
# GNU sed:
sed -z 'y/\n/:/' IP.txt > IPv.txt
# POSIX
sed -e':1' -e'$!N;s/\n/:/;t1' IP.txt > IPv.txt
Cледует отметить, что в вариантах tr и GNU sed убирается и последний перевод строки, так что если надо — его потребуется добавить.
« Последнее редактирование: 13 Ноября 2015, 13:23:12 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #4 : 13 Ноября 2015, 14:13:46 »
Azure, почему перевод строки им не убрать? Что означает ключ -z?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #5 : 13 Ноября 2015, 16:42:58 »
alsoijw,
Sed — это строковый редактор.
Он читает файл построчно, отбрасывая перевод строки и выполняет операции над строкой. Потом выводит строку на печать, добавляя перевод строки. Параметр -z меняет такое поведение и заставляет рассматривать файл как 1 строку с переводами строк внутри.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #6 : 13 Ноября 2015, 18:13:42 »
alsoijw,
Perlэто конечно хороша, но у меня вся программа на плюсах написана, так что было бы неплохо ими же и справиться.
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7210
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #7 : 13 Ноября 2015, 18:46:59 »
Гриб_под_зонтом, а какой перенос строк в файле? Пример файла можно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #8 : 13 Ноября 2015, 18:49:17 »
peregrine,
Вот:
84.134.105.226
188.96.223.37
176.61.163.222
83.109.144.71
76.169.219.19
24.49.178.106
91.16.150.62
46.109.151.213
217.227.137.123
50.170.250.59
24.222.133.244
5.10.211.142
82.95.146.221
37.190.51.0
72.135.218.201
2.166.250.233
84.188.205.28
92.107.125.147
188.101.50.132
24.178.225.73
86.206.98.212
94.111.24.49
93.193.187.59
178.55.11.14
46.223.233.71
87.187.7.60
2.4.194.201
91.200.64.170
86.56.8.199
209.91.41.71
84.107.176.161
85.255.235.90
216.26.214.115
75.97.53.62
187.32.216.1
69.10.202.89
74.67.138.67
85.179.35.241
94.212.99.71
213.196.152.58
87.57.118.90
142.177.108.165
208.89.76.195
91.9.81.66
37.24.148.241
46.212.217.243
88.103.221.3
217.123.201.91
83.181.41.113
217.251.78.6
89.241.205.182
174.5.98.79
188.210.58.195
92.110.198.220
85.71.215.99
12.220.62.2
84.24.254.105
79.246.46.40
82.95.249.75
91.21.45.186
178.121.234.132
208.54.86.164
79.232.250.163
72.228.28.7
178.6.174.117
188.227.44.244
75.85.36.106
32.97.110.59
85.76.103.183
74.248.57.162
78.209.186.8
71.218.10.107
92.16.120.207
194.60.106.111
2.165.191.70
86.216.48.37
86.142.13.174
199.253.103.242
66.25.216.74
92.40.249.156
95.96.19.13
87.115.62.232
91.11.148.97
87.186.123.58
5.169.175.47
178.196.244.86
86.129.72.107
178.70.85.71
86.171.235.230
213.162.144.254
184.167.21.153
84.177.81.86
212.130.111.55
32.176.108.142
91.6.253.34
89.245.23.99
71.231.118.216
174.89.117.165

Пользователь решил продолжить мысль 13 Ноября 2015, 18:50:27:
Насколько я знаю, символ перевода строки - '\n'
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5663
  • Все по палатам!
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #9 : 13 Ноября 2015, 19:56:02 »
Насколько я знаю, символ перевода строки - '\n'
Unix - 0xA
Win - 0xD 0xA
Mac - 0xD
'\n' - для файлов разных ОС может отличаться
Извините, я все еще учусь

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #10 : 13 Ноября 2015, 20:10:21 »
windows - '\r'
linux - '\n'
не?
Wars ~.o

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #11 : 13 Ноября 2015, 20:20:04 »
Ну что, есть предположение что у меня не так?
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #12 : 13 Ноября 2015, 20:28:09 »
Гриб_под_зонтом,
всего команды есть, а зачем с++?
Wars ~.o

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #13 : 13 Ноября 2015, 20:30:45 »
victor00000,

alsoijw,
Цитировать
у меня вся программа на плюсах написана, так что было бы неплохо ими же и справиться.
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5663
  • Все по палатам!
    • Просмотр профиля
Re: замена символов в файле (с++)
« Ответ #14 : 13 Ноября 2015, 21:05:45 »
Гриб_под_зонтом, с юникс файлами
(Нажмите, чтобы показать/скрыть)
Извините, я все еще учусь

 

Страница сгенерирована за 0.061 секунд. Запросов: 25.