C ++:在C ++中将字母数字字符串转换为Unsigned int

时间:2013-12-30 11:13:05

标签: c++

我的类有两个无符号的int成员变量,如

unsigned int lowByte;
unsigned int highByte;

我需要将字母数字字符串值Ex:“1234 ##”或“5635 $$”存储到上面的两个或任何一个变量中......! &安培;我应该能够从unsigned int重新构造字符串值..!

请帮忙吗?

1 个答案:

答案 0 :(得分:2)

发布的代码生成相同的子字符串:value.substr(0,pos1)。请注意,std::string::substr()不会修改对象,而是返回一个新的std :: string。

示例:

#include <iostream>
#include <string>

int main ()
{
    std::string value ="12,fooBar";
    unsigned int myNum;
    std::string myStr;

    const size_t pos1 = value.find(',');    
    if (std::string::npos != pos1)
    {
        myNum = atoi(value.substr(0, pos1).c_str());
        myStr = value.substr(pos1 + 1);
    }

    std::cout << myNum << " and " 
              << myStr << std::endl;

    return 0;
}

输出:

12 and fooBar

如果unsigned int是唯一需要的部分,那么以下内容将起作用:

unsigned int myNum = atoi(value.c_str());

asoi()将停在第一个非数字字符(不包括可选的前导 - 或+),在本例中为。