从字符串转换为整数

时间:2010-08-24 01:58:24

标签: c++

我想知道将int转换为C ++样式字符串以及从C ++样式字符串转换为int的最简单方法是什么。

修改

非常感谢你。将表单字符串转换为int时如果传递char字符串会发生什么? (例如:“abce”)。

谢谢&的问候,

mouseY的

4 个答案:

答案 0 :(得分:3)

最简单可能是使用operator<<operator>>使用stringstream(您可以从stringstream初始化string },并使用流的.str()成员在写入后检索字符串。

Boost有一个lexical_cast,这使得这一点变得特别容易(虽然不是效率的典范)。正常使用类似于int x = lexical_cast<int>(your_string);

答案 1 :(得分:1)

您可以将“%x”说明符更改为“%d”或sprintf支持的任何其他格式。确保适当调整缓冲区大小'buf'

int main(){
        char buf[sizeof(int)*2 + 1];
        int x = 0x12345678;
        sprintf(buf, "%x", x);

        string str(buf);

        int y = atoi(str.c_str());
    }

编辑2:

int main(){
    char buf[sizeof(int)*2 + 1];
    int x = 42;
    sprintf(buf, "%x", x);

    string str(buf);

    //int y = atoi(str.c_str());
    int y = static_cast<int>(strtol(str.c_str(), NULL, 16));
}

答案 2 :(得分:0)

这是将字符串转换为数字。

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>

int convert_string_to_number(const std::string& st)
{
    std::istringstream stringinfo(st);
    int num = 0;
    stringinfo >> num;
    return num;
}



int main()
{
    int  number = 0;

    std::string number_as_string("425");
    number = convert_string_to_number(number_as_string);

    std::cout << "The number is " << number << std::endl;
    std::cout << "Number of digits are " << number_as_string.length() << std::endl;
}

同样明智的是,以下是将数字转换为字符串。

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>

std::string convert_number_to_string(const int& number_to_convert)
{
    std::ostringstream os;
    os << number_to_convert;
    return (os.str());
}

int main()
{
    int number = 425;

    std::string stringafterconversion;
    stringafterconversion = convert_number_to_string(number);

    std::cout << "After conversion " << stringafterconversion << std::endl;
    std::cout << "Number of digits are " << stringafterconversion.length() << std::endl;
}

答案 3 :(得分:-1)

使用atoi将字符串转换为int。使用stringstream转换另一种方式。