Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Потоковый ввод/вывод (http://forum.oszone.net/showthread.php?t=182261)

котвася 06-08-2010 00:28 1467811

Потоковый ввод/вывод
 
пишу два кода, оба по смыслу одинаковые, но не один не работает:
Код:

int main()
{
        //setlocale(LC_ALL, ".1251");
        int x = 100;
        cout << setiosflags(ios::hex | ios::showbase) << x << endl;
        system("pause");
        return 0;
}

Код:

int main()
{
        //setlocale(LC_ALL, ".1251");
        int x = 100;
        cout << cout.flags(ios::hex | ios::showbase) << x << endl;
        system("pause");
        return 0;
}

пишу в MVS2008, первый вообще не срабатывает, а второй чушь выдает.
Должно печатать 100 в 16-ричной сист.исч -> 0x64
что не так?
написал:
Код:

int main()
{
        //setlocale(LC_ALL, ".1251");
        int x = 100;
        cout << cout.flags(ios::hex | ios::showbase) << x << endl;
        cout << x << endl;
        system("pause");
        return 0;
}

второй раз cout выводит правильно. В чем дело?

котвася 06-08-2010 00:34 1467815

правильность работы 2-го кода добился уже:)
остался 1-й помогите, а то сам разберусь! :)
не понятно почему он не работает вообще: число 100 так и выводит 100.

да и вообще чет и другие флаги через setiosflags() не работают должным образом.

котвася 06-08-2010 00:56 1467828

решено, надо сначала сбросить flag
resetiosflags(ios::dec).
Почему так?
Почему установленный новый не используется(не устанавливается)?
как обнулить long для всех флагов?

котвася 06-08-2010 01:16 1467837

нашел два способа методом научного тыка :) :

resetiosflags(0x200);
cout.flags(0);

не понятно на счет первого, это получается флаг dec имеет "номер" условно 513 и его обнуляют или 0х200 обнуляет все.
Во втором так точно все, наверное, ->long = 0;

Drongo 06-08-2010 10:39 1468015

Так пробовал?
Код:

#include <iostream>
using namespace std;


int main()
{
        //setlocale(LC_ALL, ".1251");
        int x = 100;
        cout.flags(ios::hex | ios::showbase);
        cout << x << endl;
        system("pause");
        return 0;
}



Время: 23:34.

Время: 23:34.
© OSzone.net 2001-