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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: С++ оператор вывода <<  (Прочитано 1688 раз)

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

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
С++ оператор вывода <<
« : 26 Ноября 2011, 07:42:19 »
Доброго всем времени суток.Уважаемые форумчане.Помагите разобраться в чём дело?
Я не порграмист професионал,а просто увлекаюсь програмированием.
Вопрос такой.Оператор вывода << при выводе строки на консоль выволит строку как и задумано.
(Нажмите, чтобы показать/скрыть)

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: С++ оператор вывода <<
« Ответ #1 : 26 Ноября 2011, 09:54:24 »
вот в такой программке - вывод на экран и вывод в файл идентичен.
(Нажмите, чтобы показать/скрыть)
может в вашей переменной nn в конце есть спецзнак типа \n или \0 которые различно интерпретируются для экрана или файла?
во многих серьезных IDE есть возможность посмотреть содержимое переменной и давайте посмотрим что там.

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #2 : 26 Ноября 2011, 10:06:02 »
Знаки '\O' '\n' в переменных типа string определённо coдержатся, но в консоль же вывод правиьный?
вот вся програмка
(Нажмите, чтобы показать/скрыть)

 
« Последнее редактирование: 26 Ноября 2011, 12:20:24 от kupamaan »

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #3 : 26 Ноября 2011, 13:11:13 »
Тогда компилятор выдаёт
terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::substr
Аварийный останов
вопрос и заключается в том ПОЧЕМУ на стандарт выводится несколько типов string в одну строкуб
а в файл в одну строку не выводит,только по строчно каждый тип?
« Последнее редактирование: 26 Ноября 2011, 13:21:21 от kupamaan »

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #4 : 26 Ноября 2011, 13:21:15 »
Что-то я хрень написал. У меня при символе "\n" что в терминале, что в файле получается перенос (если есть в выводе "\n").
А так, оба без переноса.

string s;
fstream fout,fin;

fin.open("in.txt",ios::in);
fout.open("out.txt",ios::out | ios::app);
getline(fin,s);
s = s.substr(6);
cout << s << s << endl;
fout << s << s << endl;
fin.close();
fout.close();

Что на самом деле у тебя содержит переменная "s" (или чем заканчиваются строки)? Как файл просматриваешь?
« Последнее редактирование: 26 Ноября 2011, 14:06:04 от unimix »

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #5 : 26 Ноября 2011, 14:36:43 »
в общем файлы с телфона сгружаю в комп.
формат .vcf(как ты уже видел из кода).
Чтобы при появлении нового телефонного номера каждый раз не дописивать в ручную,
была и задумана эта програмка.
но формат вывода в файл мне не нравится,хотя на консоль(при замене fos на cout) работает отлично.
вот формат файла,но дело я думаю не в нём.
BEGIN:VCARD

VERSION:2.1

N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;Checkline

FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Checkline

TEL;CELL; HOME; VOICE:01805369369

END:VCARD

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #6 : 26 Ноября 2011, 14:56:12 »
Ты лучше покажи в 16-ричном виде, что там между "VOICE:01805369369" и "END:VCARD". А ещё лучше, что между строкой, где есть "ABLE:;" и новой строкой. Или просто дай сам файл скачать, но не текстовый, а тот, с которого идёт чтение (оригинал тоесть).
« Последнее редактирование: 26 Ноября 2011, 14:59:54 от unimix »

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #7 : 26 Ноября 2011, 15:29:10 »
я наверное неудачно выбрал файл.
вот другой.
BEGIN:VCARD

VERSION:2.1

N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;Oleg

FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:Oleg

TEL;CELL; HOME; VOICE:09417056779

END:VCARD
Цитировать
Ты лучше покажи в 16-ричном виде
я бы с удовольствием да пока не очень волоку в зтом.
а может тебе сам файл прислать?









Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #8 : 26 Ноября 2011, 15:47:50 »
Выкладывай файл (в архиве) и ссылку на него сюда.
« Последнее редактирование: 26 Ноября 2011, 15:50:57 от unimix »

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #9 : 26 Ноября 2011, 15:53:10 »
а imail у тебя нету?
что на сервер грузить?
такой формат на форуме не принимается

Пользователь решил продолжить мысль 26 Ноября 2011, 15:55:42:
http://depositfiles.com/files/mmimpovnl
« Последнее редактирование: 26 Ноября 2011, 15:55:42 от kupamaan »

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #10 : 26 Ноября 2011, 16:06:35 »
У тебя проблема из-за символа \x0d. Он по разному воспринимается. Некоторые текстовые редакторы воспринимают его как разделитель строк. Консоль -- как возврат в начало.
« Последнее редактирование: 26 Ноября 2011, 16:14:35 от unimix »

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #11 : 26 Ноября 2011, 16:20:06 »
и что делать  :o?

Пользователь решил продолжить мысль 26 Ноября 2011, 16:21:09:
это как то с системой связано?

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #12 : 26 Ноября 2011, 16:25:35 »
Использовать второй аргумент метода substr, чтобы последний ненужный символ не возвращался.

Оффлайн kupamaan

  • Автор темы
  • Любитель
  • *
  • Сообщений: 52
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #13 : 27 Ноября 2011, 12:56:32 »
Спрасибо unimix за наводящую подсказку,
второй аргумент функции substrдействительно помог.
Правда я не сразу вкурил как его использовать.

Оффлайн Garre

  • Новичок
  • *
  • Сообщений: 21
    • Просмотр профиля
Re: С++ оператор вывода <<
« Ответ #14 : 28 Ноября 2011, 18:00:05 »
Ты лучше иди на форум по C++ !

 

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