[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Юзай уникод, ВС9 заточена под уникод

    wchar_t *wcString = L"Preved";
     
  2. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    а немного по подробнее можно? как к примеру вывести на консольный экран:
    char z[] = "ПревеД";
    puts(z);
    чтобы на консоле отображало ПревеД а не хз что. А то я попробовал то что ты написал, так там цифры одни.
    И еще, можно както глобально делать перекодировку в ср1251 без CharToOem()? а то немного напряжно постоянно использовать эту ф-ю для каждой переменной.
    И все же, как тут правильно использовать CharToOem()? интересно всетаки что они изменили.
     
  3. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    horlyk, первый параметр CharToOem - источник, второй - приемник. Просто IMHO, я бы не совмещал их. Хз что может произойти, это, конечно, зависит от реализации.
    Тем более NecroSoft MSDN вот что выдает
    Так... теперь немножко теории.

    wchar_t это по сути дело тот же short. Потому, используя, cout ты получаешь на выходе цифры.

    Теперь перейдет в "раздел как это решить".
    использовать wcout. Он нормально вывод уникод. Можешь написать свою функцию, которая будет вызывать CharToOem и выводить. Можешь вызывать

    setlocale(LC_ALL, "Russian");

    она тоже ничего ;)
     
    2 people like this.
  4. zindi

    zindi Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    74
    Likes Received:
    17
    Reputations:
    0
    а лутше просто поставь в настройках проекта мульти байт код и должно работать.
     
  5. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    чет я немного не догоняю, wcout тож не хочет русские букви выводить.

    wchar_t z[7] = L"ПревеД";
    wcout << z << endl;

    пробовал и просто чар. Плз, напишите ктото маленький примерчик.
     
  6. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Code:
    #include <iostream>
    #include "stdafx.h"
    
    using std::wcout;
    
    int _tmain()
    {
    	wchar_t *wcString = L"ненене";
    	setlocale(LC_ALL, "Russian");
    	wcout << L"дадада!" << L" " << wcString << std::endl;
    	_wsystem(L"pause");
    	return 0;
    }
    
    
    
    
     
  7. bxN5

    bxN5 Elder - Старейшина

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    как прописать свою софтинку в автозагрузку? (нужен пример кода)
     
  8. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    2bxN5
    http://www.softholm.com/articles/register.html
     
    2 people like this.
  9. ronald

    ronald Elder - Старейшина

    Joined:
    27 Mar 2008
    Messages:
    252
    Likes Received:
    42
    Reputations:
    6
    тэк-с, вроде где-то пробегала пред моими глазами инфа о том, что это может сама консоль не поддерживать (русский язык имею ввиду)
     
  10. zindi

    zindi Elder - Старейшина

    Joined:
    11 Apr 2007
    Messages:
    74
    Likes Received:
    17
    Reputations:
    0
    :)
    подключаем
    #include <windows.h>

    int main()
    {
    SetConsoleOutputCP(1251);
    cout<<"Вот вам жырный пример "<<endl;
    return 0;
    }
     
  11. Kaas

    Kaas Elder - Старейшина

    Joined:
    13 Feb 2007
    Messages:
    31
    Likes Received:
    5
    Reputations:
    0
    как вывести число с ведущим нулем и степень десяти?
    т.е. я юзаю модификатор %e, могут быть такие числа:
    0.123E+001
    5.123E+001

    а мне нужно чтобы слева от точки был ноль всегда. Если это можно сделать модификатором вывода, подскажите:)
     
  12. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    ronald, ты о 08 студио?
    Кстати, 4p3, у меня всеравно код не заработал - ругался ошибкой...
     
  13. horlyk

    horlyk Elder - Старейшина

    Joined:
    2 Dec 2007
    Messages:
    132
    Likes Received:
    6
    Reputations:
    0
    zindi, после ввода твоего кода, вообще перестает существовать какая поддердка русского языка)

    Даже стандартная надпись типа "Для продолжения нажмите любую клавишу" тоже абра кадаброй стала)
     
  14. Larionich

    Larionich Member

    Joined:
    21 Sep 2008
    Messages:
    15
    Likes Received:
    5
    Reputations:
    0
    Насколько мне известно, printf не может выводить с ключом e или E дробное число не в стандартной форме ( не в a+q^t, 1<=a<10), ответ "нет", нельзя модификатором вывода сделать то, что ты захотел. А у тебя компилятор и выводит не в стандартной форме, ерунда получается. Если же обойтись без степени десятки, то функция (то же с флагом "e" можно написать)
    Code:
    printf("%13.3f", a); //минимальная ширина поля 13 символов, точность 3
    Можно же, заняться математикой, побитово считывать переменную (типа float например, Си), 4 байта, 32 бита на всю; 1 бит под знак, 8 под порядок, 23 на мантиссу:
    например 12345.67=(2^13)*1.507... 13 это порядок (он не представляется в самой переменной), (127+13) это смещенный порядок (так он представляется в самой переменной [ 127+порядок]) , мантиса это представление 0.507... в двоичном коде.
    Если не ошибаюсь так : знак числа(1 бит) | порядок(8) | мантисса(23).
    Информация интересная, то тебе она скорее всего не нужна.
     
    #1614 Larionich, 23 Sep 2008
    Last edited: 23 Sep 2008
    1 person likes this.
  15. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    Тут нет телепатов. Код ошибки в студию

    Все что я пишу, я обязательно прогоняю на компиляторе, так что вероятность ошибки исключена
     
    #1615 4p3, 23 Sep 2008
    Last edited: 23 Sep 2008
    1 person likes this.
  16. ronald

    ronald Elder - Старейшина

    Joined:
    27 Mar 2008
    Messages:
    252
    Likes Received:
    42
    Reputations:
    6
    08 не доверяю, хотя бы из-за std::cout ))) такшто не знаю насчёт 08
     
  17. 4p3

    4p3 Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    142
    Likes Received:
    30
    Reputations:
    0
    а что с ним? у меня отлично работает
     
  18. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    system("@chcp 1251 > nul"); для кодировки юзаю.
     
  19. ++Norton++

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    167
    Likes Received:
    39
    Reputations:
    0
    Задача в следующем, нужно написать функцию на C, которая бы считывала указанный текстовый файл и печатала его содержимое на экран. Как это можно сделать? Пытался так:
    Code:
    void catFile(char *s0, char *s1, char *s2) { 
        FILE *cfPtr; 
        char *rwfile; 
        if(strcmp(s0, "") && !strcmp(s1, "") && !strcmp(s2, "")) { /*cat file.name*/ 
        if((cfPtr = fopen(s0, "r")) == NULL) puts("File could not be opened");   else { 
        while(!feof(cfPtr)) { 
        fread(rwfile, sizeof(char), 1, cfPtr); 
        } 
        if(!strcmp(rwfile,"")) { puts(rwfile); } 
        fclose(cfPtr); 
      } 
        }
    
    но в ответ получал только Segmentation Fault :( Помогите пожалуйста разобраться!
    Заранее спасибо!
     
  20. _nic

    _nic Elder - Старейшина

    Joined:
    5 May 2006
    Messages:
    651
    Likes Received:
    54
    Reputations:
    3
    Несколько вопросов
    Как вытащить ip адрес приконектившегося клиента из SOCKADDR_IN после accept ?
    Если CreateFile вызывается внутри потока и все дальнейший операции с файлом проходят внутри того же потока,то надо заполнять lpSecurityAttributes?Если оставить NULL будет работать или нет?
    Если уже работает один поток в котором вызывалось WSAStartup ,то надо повторно вызывать ещё раз WSAStartup во 2м потоке если он запущен чуть позже 1го потока который ещё неокончил свою работу ?
     
    #1620 _nic, 24 Sep 2008
    Last edited: 24 Sep 2008
Thread Status:
Not open for further replies.