将char数组转换为单个int?

时间:2011-05-23 06:06:27

标签: c++ char int

任何人都知道如何将char数组转换为单个int?

char hello[5];
hello = "12345";

int myNumber = convert_char_to_int(hello);
Printf("My number is: %d", myNumber);

9 个答案:

答案 0 :(得分:31)

有多种方法可以将字符串转换为int。

解决方案1:使用旧版C功能

int main()
{
    //char hello[5];     
    //hello = "12345";   --->This wont compile

    char hello[] = "12345";

    Printf("My number is: %d", atoi(hello)); 

    return 0;
}

解决方案2:使用lexical_cast(最合适和最简单)

int x = boost::lexical_cast<int>("12345"); 

解决方案3:使用C++ Streams

std::string hello("123"); 
std::stringstream str(hello); 
int x;  
str >> x;  
if (!str) 
{      
   // The conversion failed.      
} 

答案 1 :(得分:5)

如果您使用的是C++11,则应该使用stoi,因为它可以区分错误并解析"0"

try {
    int number = std::stoi("1234abc");
} catch (std::exception const &e) {
    // This could not be parsed into a number so an exception is thrown.
    // atoi() would return 0, which is less helpful if it could be a valid value.
}

应该注意到&#34; 1234abc&#34;在传递给char[]之前,从std:stringstoi()implicitly converted

答案 2 :(得分:1)

使用sscanf

/* sscanf example */
#include <stdio.h>

int main ()
{
  char sentence []="Rudolph is 12 years old";
  char str [20];
  int i;

  sscanf (sentence,"%s %*s %d",str,&i);
  printf ("%s -> %d\n",str,i);

  return 0;
}

答案 3 :(得分:1)

例如,“mcc”是一个字符数组,而“mcc_int”是您想要获取的整数。

serializer = self.serializer_class(query, many=True)

答案 4 :(得分:0)

对于那些对没有依赖项的实现感兴趣的人,我会把它留在这里。

inline int
stringLength (char *String)
    {
    int Count = 0;
    while (*String ++) ++ Count;
    return Count;
    }

inline int
stringToInt (char *String)
    {
    int Integer = 0;
    int Length = stringLength(String);
    for (int Caret = Length - 1, Digit = 1; Caret >= 0; -- Caret, Digit *= 10)
        {
        if (String[Caret] == '-') return Integer * -1;
        Integer += (String[Caret] - '0') * Digit;
        }

    return Integer;
    }

使用负值,但不能处理中间混合的非数字字符(尽管应该很容易添加)。仅限整数。

答案 5 :(得分:0)

我使用:

int convertToInt(char a[1000]){
    int i = 0;
    int num = 0;
    while (a[i] != 0)
    {
        num =  (a[i] - '0')  + (num * 10);
        i++;
    }
    return num;;
}

答案 6 :(得分:0)

使用 cstring 和 cmath:

#this works
del df[164301.0]
del df['TB-0071']

# this doesn't work
for id in unwanted_id:
    del df[id]

答案 7 :(得分:-1)

长话短说,你必须使用atoi()

编辑:

如果您有兴趣这样做the right way

char szNos[] = "12345";
char *pNext;
long output;
output = strtol (szNos, &pNext, 10); // input, ptr to next char in szNos (null here), base 

答案 8 :(得分:-1)

Ascii字符串到整数转换由atoi()函数完成。