将数字转换为ascii,然后转换为int? C ++

时间:2014-02-26 20:35:54

标签: c++ char ascii

如果我在一行上有单独的字符,例如:4356 我怎么能将它们转换成最终的整数?所以不是'4''3''5''6',而是4356。 所以,我知道我需要取第一个数字并乘以10然后加上下一个数字然后将所有数字乘以10直到我到达最后一个数字。我怎样才能以有效的非崩溃方式写出来?

4 个答案:

答案 0 :(得分:0)

char chars[NUM_OF_CHARS] = { '4','5','8'};
int value = 0;

    for(int i=0;i<NUM_OF_CHARS;i++)
    {   
        if(chars[i] >= '0' && chars[i] <= '9') {
            value*=10;
            value+=chars[i] - '0';
        }
    }

如果你的字符是以空字符结尾的字符串,请在评论建议中使用atoi()。

答案 1 :(得分:0)

使用C ++,您可以使用std::cin读取char,检查它是否为数字,然后操纵总数。

int total = 0;
char c;
while( std::cin >> c && c != '\n' )
{
   if( c >= '0' && c <= '9' )
       total = total * 10 + (c - 48);
}

std::cout << "Value: " << total << std::endl;

答案 2 :(得分:0)

您可以读取std :: string类型的对象中的输入,然后使用函数std::stoull(或std::stoi或此函数族中的其他函数)

例如

std::string s;

std::cin >> s;

unsigned long long = stoull( s );

或者你可以简单地读入一些完整的对象:)

例如,如果in_file是某个输入文件流,那么您可以编写

unsigned long long n;

while ( in_file >> n ) std::cout << n;

或者

std::vector<unsigned long long> v;
v.reserve( 100 );
unsigned long long n;

while ( in_file >> n ) v.push_back( n );

答案 3 :(得分:0)

以下是使用sringstream的示例:

#include <string>
#include <iostream>
#include <sstream>

int main()
{
    int n;
    std::string s ="1234";//or any number...
    //or: char s[] = "1234";
    std::stringstream strio;
    strio<<s;
    strio>>n;
    std::cout<<n<<std::endl;

    return 0;
}