Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Nemir
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 12
#1

кодировка с++ консоль - C++

10.10.2017, 20:13. Просмотров 176. Ответов 0

Здравствуйте. Возникла следующая проблема при решении задачи:
Нужно не используя файловых переменных и потоков, выполнять команды из файла и выгружать результат в другой файл.
Подробнее, есть терминал, туда подаются команды, обычные для cmd типа cd, rd и прочее. Через команду echo в текстовый файл выгружается следующий список команд:
ping google.ru
ping yandex.ru
ping rutor.org
Далее с помощью плюсов и команд выполнить эти команды из файла, результат выгрузить в другой файл то есть programme < filename.txt > result.txt
Далее используя файл result.txt выявить к каким из вышеперечисленных серверов нельзя подключиться и к каким можно.

Проблема в том, что при считывании (type result.txt | programme2) строка не распознаётся в программе, то есть там вместо кириллицы краказябры. Пробовал менять кодировки с 1251 на 866 и наоборот при помощи SetConsoleCP и SetConsoleOutputCP.
Замечу, что есть две программы: терминал и вторая, которая определяет можно ли подключиться к серверам.
Код терминала
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
int main()
{
    char* str_com = new char[100];
    SetConsoleCP(866);
    SetConsoleOutputCP(866);
    system("cls");
    while (strcmp(str_com, "exit") != 0 && !cin.eof())
    {
        cin.getline(str_com, 100);
        if (!strlen(str_com))
        {
            cout << "error" << endl;
            continue;
        }
        else
        {
            char* buff = new char[strlen(str_com) - 3];
            for (int i = 0; i < strlen(buff); ++i)
                buff[i] = str_com[i + 3];
            if (strncmp(str_com, "cd", 2) == 0)
                SetCurrentDirectoryA(buff);
            else if (strncmp(str_com, "rd", 2) == 0)
                RemoveDirectoryA(buff);
 
            else system(str_com);
        }
    }
 
    delete[] str_com;
    return 0;
}
Код второй программы
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    char* ping_output = new char[1000];
    string proc;
    cin.getline(ping_output, 10000, '4');
    proc = ping_output;
    string stroka = "Обмен"; 
    int pos = proc.find(stroka, 0); // То есть я ищу в файле, содержащем результат команды ping слово "Обмен"
    cout << proc << endl;           // хреновый критерий, но суть не в этом, суть в том, что оно там есть, а программа его  
                                                   //не находит
    cout << pos << endl;
    system("pause");
    return 0;
}
Хочу заметить, что если я просто введу в терминале "echo Обмен <какой-то текст> > filename.txt" , то вторая программа находит "Обмен" в этом файле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2017, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос кодировка с++ консоль (C++):

Консоль и клавиатура... - C++
в консоли я хочу использовать стрелки или WASD, чтобы руководить той же &quot;змейкой&quot; (читал исходник ее, но не смог разобраться). Ну если не...

С++(консоль)файлы,структуры - C++
1) массив 3 на 3 нужно найти строчку в которой максимальный элемент и заменить её на 0 пример 123 макс элемент 6 получаем 123 ну вот...

Вернуть stdin в консоль - C++
Допустим я перенаправил поток stdin/stdout в файл с помощью функции freopen. Как заставить его снова работать с консолью? Добавлено...

Кодировка 8BITMIME - C++
Может у кого есть готовые алгоритмы шифровки base64, можно пример?

Кодировка IP адреса - C++
Помогите пожалуйста закодировать IP адрес в с++:help:

Map c++ вывод на консоль по ключу - C++
Нужна помощь! У меня есть контейнер : map &lt;string, int&gt; m1 = { { &quot;wq&quot;, 1 }, { &quot;etr&quot;, 2 }, { &quot;weg&quot;, 4 } }; Нужно получить...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2017, 20:13
Привет! Вот еще темы с ответами:

При запуске консоль не поддерживается - C++
Добрый день. Есть такая проблема, прога работает нормально но одно диалоговое окно задолбало(извините...)... При запуске прилрожения...

Ввести и вывести текст на консоль - C++
Нужно простая работа с текстом нужно ввести текст(с пробелами т.е. cin - неподойдет) и вывести введенный текст также с пробелами со всем....

mingw+ WindowsXP+ юникод+ консоль+ русский язык+ Dev-Cpp. Вот надо разобраться со всем этим благолепием - C++
Не слабо нам решить эту проблему? В общем, всё, что ест в гугле я пробовал, бесполезно. Всякие там локали и кодировки. Те, ко искал,...

Консоль - C++ Builder
Предположим имеется исходник: #include iostream; using std::cout; using std::cin; using std::endl; int main ( ) { ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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