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

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

Войти
Регистрация
Восстановить пароль
 
uhx
57 / 57 / 6
Регистрация: 11.07.2013
Сообщений: 303
#1

Эксперименты с system("pause >> void"); - C++

13.03.2014, 16:11. Просмотров 935. Ответов 7
Метки нет (Все метки)

Вооообщем
Сегодня я узнал одну страшную вещь:
при вводе system("pause>>void"); эта надпись (от паузы) сохраняется в файле void!
Правда с кривой кодировкой, но да ничего. Решил я поэксперементировать...
.."ping cyberforum.ru>>log.txt"); Вау! Все записалось! (Опять же, кривая кодировка)
И вот вопрос вообщем.
2 варианта:

1) Можно ли сделать нормальную кодировку ?! (SetConsoleOutputCP(1251) делает ее нормальной только для "отчета" по пауззе, остальное кривое)
2) Можно ли этот самый "отчет" записать в какую-нибудь переменную?
Я думаю второе трудновыполнимо, если это вообще возможно сделать, поэтому я склоняюсь к первому варианту. Думаю можно как-то с нормальной кодировкой поместить все в файл (а оттуда я уже буду считывать)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.03.2014, 16:24     Эксперименты с system("pause >> void"); #2
Цитата Сообщение от uhx Посмотреть сообщение
при вводе system("pause>>void"); эта надпись (от паузы) сохраняется в файле void!
ф-я system тут не причем, это заслуга интерпретатор командной строки.
foo > filename - сбрасывает весь вывод stdout в файл с названием filename, если такого файла нет - то он создается, если есть - то перезаписывается
foo >> filename - то же самое, только если файл существует то он не пересоздается, а дополняется
foo < filename втягивает весь ввод из файла вместо stdin

http://technet.microsoft.com/en-us/l.../bb490982.aspx

Цитата Сообщение от uhx Посмотреть сообщение
1) Можно ли сделать нормальную кодировку ?! (SetConsoleOutputCP(1251) делает ее нормальной только для "отчета" по пауззе, остальное кривое)
навряд ли получится, но можно пошаманить с командой chcp

Цитата Сообщение от uhx Посмотреть сообщение
2) Можно ли этот самый "отчет" записать в какую-нибудь переменную?
чем файл не переменная?
uhx
57 / 57 / 6
Регистрация: 11.07.2013
Сообщений: 303
13.03.2014, 16:30  [ТС]     Эксперименты с system("pause >> void"); #3
Цитата Сообщение от Jupiter Посмотреть сообщение
чем файл не переменная?
Потому что кодировка кривая)) Если первый вариант не подходит, то у меня в голову приходит второй... который реализовать труднее (опять таки, если вообще возможно)
Jupiter
13.03.2014, 16:32
  #4

Не по теме:

Цитата Сообщение от uhx Посмотреть сообщение
Потому что кодировка кривая
это винда ваша кривая

Байт
Эксперт C
15841 / 10168 / 1522
Регистрация: 24.12.2010
Сообщений: 19,171
13.03.2014, 16:34     Эксперименты с system("pause >> void"); #5
Цитата Сообщение от uhx Посмотреть сообщение
Можно ли этот самый "отчет" записать в какую-нибудь переменную?
В Qt есть такой механизм, реализуемый классом QProcess, который позволяет запускать программу как бы из командной строки и перехватывает весь ее stdout (и stderr за одно). Перехватить, это и значит записать в переменную (строку, как правило).
Наверное, подобные механизмы есть и в каких-то других библиотеках.
Croessmah
13.03.2014, 16:35
  #6

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
это винда ваша кривая
она мелкософтовская

Байт
Эксперт C
15841 / 10168 / 1522
Регистрация: 24.12.2010
Сообщений: 19,171
13.03.2014, 16:36     Эксперименты с system("pause >> void"); #7
А насчет кодировки... Получил переменную - делай с ней, что хошь.
И еще есть такая программка iconv. Перекодирует что угодно и куда угодно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 17:38     Эксперименты с system("pause >> void");
Еще ссылки по теме:
C++ Аналог system("pause")
system("pause") C++
Error C2440: =: невозможно преобразовать "void *" в "Node *" C++
C++ Тяжело ли написать утилитку, которая работает как DOS-команда "pause"
C++ Error C2440 невозможно преобразовать "void *" в "char *

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

Или воспользуйтесь поиском по форуму:
uhx
57 / 57 / 6
Регистрация: 11.07.2013
Сообщений: 303
13.03.2014, 17:38  [ТС]     Эксперименты с system("pause >> void"); #8
Эксперименты с system("pause >> void");

:\
Yandex
Объявления
13.03.2014, 17:38     Эксперименты с system("pause >> void");
Ответ Создать тему
Опции темы

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