相关疑难解决方法(0)

如何在C中将字符串转换为整数?

我试图找出是否有一种在C中将字符串转换为整数的替代方法.

我经常在我的代码中模式化以下内容.

char s[] = "45";

int num = atoi(s);
Run Code Online (Sandbox Code Playgroud)

那么,有更好的方式或其他方式吗?

c string atoi

238
推荐指数
6
解决办法
92万
查看次数

为什么stdlib.h中没有strtoi?

我已经习惯了strtod和变种.我想知道为什么stdlib.h没有附带strtoi.为什么整数被排除在这个派对之外?

具体来说,我问为什么没有版本的atoi具有strtod的安全功能.

c std

61
推荐指数
2
解决办法
5万
查看次数

正确使用strtol

下面的程序将字符串转换为long,但根据我的理解,它也会返回错误.我依赖的事实是,如果strtol将字符串成功转换为long,那么第二个参数strtol应该等于NULL.当我用55运行以下应用程序时,我收到以下消息.

./convertToLong 55
Could not convert 55 to long and leftover string is: 55 as long is 55
Run Code Online (Sandbox Code Playgroud)

如何成功检测strtol的错误?在我的应用程序中,零是有效值.

码:

#include <stdio.h>
#include <stdlib.h>

static long parseLong(const char * str);

int main(int argc, char ** argv)
{
    printf("%s as long is %ld\n", argv[1], parseLong(argv[1]));
    return 0;
 }

static long parseLong(const char * str)
{
    long _val = 0;
    char * temp;

    _val = strtol(str, &temp, 0);

    if(temp != '\0')
            printf("Could not convert %s to long and …
Run Code Online (Sandbox Code Playgroud)

c c++

26
推荐指数
3
解决办法
3万
查看次数

`strtoul()` 对于非常“负”的字符串,正确的返回值是什么?

这是一个“可以提出并回答你自己的问题”。\n我研究了这个问题,发现结果很好奇,并发布了我的发现。

\n\n
\n\n

strtoul()“非常负”的字符串应该从: 1,返回什么值ULONG_MAX或者什么?

\n\n
\n\n

strtol()

\n\n

对于表示数值的字符串,如"123",strtol()的行为符合预期。字符串(蓝色)[LONG_MIN ... LONG_MAX]转换为其预期long值。上面的字符串(黄色)LONG_MAX转换为LONG_MAX并设置errno==ERANGE。下面的字符串LONG_MIN转换为LONG_MIN并设置errno==ERANGE

\n\n

strtoul()积极的

\n\n

对于表示数值的字符串,如"123", strtoul()也按预期运行。字符串(红色)[0 ... ULONG_MAX]转换为其预期unsigned long值。上面的字符串(绿色)ULONG_MAX转换为ULONG_MAX并设置errno==ERANGE

\n\n
\n

如果主题序列以减号开头,则转换产生的值将被取反(在返回类型中)。C17dr \xc2\xa7 7.22.1.4 5

\n
\n\n

strtoul()消极的

\n\n

对于字符串(红色)[-ULONG_MAX ... -1],转换会否定正转换并添加ULONG_MAX + 1(就像将负值分配给 …

c

2
推荐指数
1
解决办法
399
查看次数

在c ++中使用atoi()函数

当我string在下面的代码中传递一个变量时,g ++给出了一个错误:

不能将'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string}'转换为'const char*'以将参数'1'转换为'int atoi(con​​st char*)'

我的代码是:

#include<iostream>
#include<stdlib.h>
using namespace std;

int main()
{
    string a = "10";
    int b = atoi(a);
    cout<<b<<"\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将代码更改为:

#include<iostream>
#include<stdlib.h>
using namespace std;

int main()
{
    char a[3] = "10";
    int b = atoi(a);
    cout<<b<<"\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

请解释为什么string不起作用.有什么区别string achar a[]

c++ atoi

-2
推荐指数
1
解决办法
3万
查看次数

标签 统计

c ×4

atoi ×2

c++ ×2

std ×1

string ×1