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

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

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

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

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

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

1) Можно ли сделать нормальную кодировку ?! (SetConsoleOutputCP(1251) делает ее нормальной только для "отчета" по пауззе, остальное кривое)
2) Можно ли этот самый "отчет" записать в какую-нибудь переменную?
Я думаю второе трудновыполнимо, если это вообще возможно сделать, поэтому я склоняюсь к первому варианту. Думаю можно как-то с нормальной кодировкой поместить все в файл (а оттуда я уже буду считывать)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 16:11     Эксперименты с system("pause >> void");
Посмотрите здесь:

Аналог функции system("pause"); C++
C++ что делать если программа не включается при функции system("pause");?
Выводит ошибку на system ("pause"); в чем дело? C++
C++ Почемо выдает ошибку в строке system("pause")
system("pause") C++
не получается передать массив из "void Vvod" в "void CalculatingEstimates" C++
C++ LNK2019: ссылка на неразрешенный внешний символ "void __cdecl run(void)" (?run@@YAXXZ) в функции _wmain
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6547 / 3967 / 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
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 302
13.03.2014, 16:30  [ТС]     Эксперименты с system("pause >> void"); #3
Цитата Сообщение от Jupiter Посмотреть сообщение
чем файл не переменная?
Потому что кодировка кривая)) Если первый вариант не подходит, то у меня в голову приходит второй... который реализовать труднее (опять таки, если вообще возможно)
Jupiter
13.03.2014, 16:32
  #4

Не по теме:

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

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

Не по теме:

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

Байт
Эксперт C
 Аватар для Байт
15028 / 9430 / 1377
Регистрация: 24.12.2010
Сообщений: 17,426
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");
Error C2440: =: невозможно преобразовать "void *" в "Node *" C++
C++ Почему не работает "system("pause")"?
Error C2440: инициализация: невозможно преобразовать "void *" в "listnode *". подскажите, что можно сделать? C++
C++ зачем нужна system("pause >nul");

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

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

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

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