Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > std::wistringstream в std::wstring


Автор: Alca 8.4.2010, 14:51
Как перевести std::wistringstream в std::wstring (VC++2008)
Код

//Ansi
{
    std::string sRes;

    std::istringstream issStream("41 41 41");
    issStream >> std::setbase(16);

    sRes = std::string(
        std::istream_iterator<INT>(issStream), 
        std::istream_iterator<INT>()
    );

    std::cout << sRes << std::endl;
}

//Unicode
{
    std::wstring sRes;

    std::wistringstream issStream(L"41 41 41");
    issStream >> std::setbase(16);

    sRes = std::wstring(
        std::istream_iterator<INT>(issStream),  //cannot convert from 'std::wistringstream' to 'std::istream_iterator<_Ty>'
        std::istream_iterator<INT>()
    );

    std::wcout << sRes << std::endl;
}

Код

error C2440: '<function-style-cast>' : cannot convert from 'std::wistringstream' to 'std::istream_iterator<_Ty>'

Автор: azesmcar 8.4.2010, 14:54
Код

std::wstring te = issStream.str();

?

Автор: Alca 8.4.2010, 15:03
Мне к тому же надо конвертнуть HEX-строку в символьную.
Код

L"41 41 41" ---> L"AAA"


Добавлено @ 15:04
Код

//Unicode
{
    std::wstring sRes;

    std::wistringstream issStream(L"41 41 41");
    issStream >> std::setbase(16);

    sRes = issStream.str();

    std::wcout << sRes << std::endl;
}


Код

41 41 41

а должно быть 
Код

AAA


Автор: azesmcar 8.4.2010, 15:17
Код

std::wstring sRes;
std::wistringstream issStream(L"41 41 41");
issStream >> std::setbase(16);
sRes = std::wstring(
    std::istream_iterator<int, wchar_t>(issStream),
    std::istream_iterator<int, wchar_t>()
    );
std::wcout << sRes << std::endl;

Автор: Alca 8.4.2010, 15:24
azesmcar,  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)