任何人都知道如何将char数组转换为单个int?
char hello[5];
hello = "12345";
int myNumber = convert_char_to_int(hello);
Printf("My number is: %d", myNumber);
答案 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:string
到stoi()
是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()
函数完成。