当前位置:  开发笔记 > 编程语言 > 正文

运算符>>读取int十六进制和十进制?

如何解决《运算符>>读取int十六进制和十进制?》经验,为你挑选了2个好方法。

我可以说服C++中的operator >>同时读取十六进制值AND和十进制值吗?以下程序演示了如何读取十六进制错误.我想要相同的istringstream能够读取十六进制和十进制.

#include 
#include 

int main(int argc, char** argv)
{
    int result = 0;
    // std::istringstream is("5"); // this works
    std::istringstream is("0x5"); // this fails

    while ( is.good() ) {
        if ( is.peek() != EOF )
            is >> result;
        else
            break;
    }

    if ( is.fail() )
        std::cout << "failed to read string" << std::endl;
    else
        std::cout << "successfully read string" << std::endl;

    std::cout << "result: " << result << std::endl;
}

nsanders.. 12

你需要告诉C++你的基础是什么.

想要解析十六进制数?将您的"是>>结果"行更改为:

is >> std::hex >> result;

将std :: dec表示十进制数,std :: oct表示八进制数.



1> nsanders..:

你需要告诉C++你的基础是什么.

想要解析十六进制数?将您的"是>>结果"行更改为:

is >> std::hex >> result;

将std :: dec表示十进制数,std :: oct表示八进制数.



2> user10392..:

使用std::setbase(0)它启用前缀相关的解析.它将能够解析10(dec)为10十进制,0x10(十六进制)为16十进制,010(八进制)为8十进制.

#include 
is >> std::setbase(0) >> result;

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有