相关疑难解决方法(0)

如何将std :: string转换为int?

只是有一个简短的问题.我已经在互联网上看了很多,我找到了一些解决方案,但没有一个已经有效.看一下将字符串转换为int,我不是指ASCII码.

为了快速减少,我们将方程作为字符串传递.我们要将其分解,正确格式化并求解线性方程.现在,在说,我无法将字符串转换为int.

我知道字符串将采用格式(-5)或(25)等,所以它肯定是一个int.但是我们如何从字符串中提取它?

我想的一种方法是通过字符串运行for/while循环,检查一个数字,然后提取所有数字,然后查看是否有一个前导' - ',如果存在,则将int乘以 - 1.

虽然这个小问题看起来有点过于复杂.有任何想法吗?

c++ string int

438
推荐指数
10
解决办法
125万
查看次数

如何使用string.substr()函数?

我想制作一个程序,以字符串格式读取一些数字并输出如下:如果数字是12345,那么它应输出12 23 34 45.我尝试使用c ++字符串库中的substr()函数,但它给了我奇怪的结果 - 它输出1 23 345 45而不是预期的结果.为什么?

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main(void)
{
    string a;
    cin >> a;
    string b;
    int c;

    for(int i=0;i<a.size()-1;++i)
    {
        b = a.substr(i,i+1);
        c = atoi(b.c_str());
        cout << c << " ";
    }
    cout << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ string substring

39
推荐指数
2
解决办法
16万
查看次数

如何判断c函数atoi是否失败或者是否是一串零?

当使用函数atoi(或strtol类似函数)时,如何判断整数转换是否失败或者转换的C字符串是否为0

对于我正在做的,0是一个可接受的值,被转换的C字符串可能包含任意数量的0s.它也可能有领先的空白.

c++ atoi

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

我怎样才能将argv []作为int?

我有一段这样的代码:

int main (int argc, char *argv[]) 
{
   printf("%d\t",(int)argv[1]);
   printf("%s\t",(int)argv[1]);
}
Run Code Online (Sandbox Code Playgroud)

在shell中我这样做:

./test 7

但是第一个printf结果不是7,我怎样才能将argv []作为int?非常感谢

c

29
推荐指数
4
解决办法
9万
查看次数

c ++按字符分割字符串?

如何102:330:3133:76531:451:000:12:44412通过" :"字符拆分诸如" " 的字符串,并将所有数字放入一个int数组(数字序列始终为8长)最好不使用外部库,如boost.

另外,我想知道如何在处理之前从字符串中删除不需要的字符,例如"$"和"#"?

c++ arrays string split

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

atoi() - 字符串到int

我读过它atoi()已被弃用,它相当于:

(int)strtol(token_start, (char **)NULL, 10);
Run Code Online (Sandbox Code Playgroud)

这是否意味着我应该使用上述代替atoi(chr)或仅仅是说它们是等价的?

c

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

为什么我在C中使用atoi()得到这个意外的结果?

我不明白以下C代码的结果.

main()
{
    char s[] = "AAA";
    advanceString(s);
}

void advanceString(p[3])
{
    int val = atoi(p);
    printf("The atoi val is %d\n",val);
}
Run Code Online (Sandbox Code Playgroud)

这里的atoi值显示为0,但我无法弄清楚确切的原因.根据我的理解,它应该是数组中每个值的十进制等值的总和?如果我错了,请纠正我.

c atoi

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

为什么你不能检查errno是否等于ERANGE?

我一直在尝试将char数组正确转换为long strtol,检查是否存在溢出或下溢,然后对long进行int转换.一路上,我注意到很多代码看起来像这样

if ((result == LONG_MAX || result == LONG_MIN) && errno == ERANGE)
{
   // Handle the error
}
Run Code Online (Sandbox Code Playgroud)

为什么你不能只说

if(errno == ERANGE)
{
    // Handle the error
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,如果发生下溢或溢出,则在两种情况下都将errno设置为ERANGE.前者真的有必要吗?可以单独检查ERANGE是否有问题?

这就是我的代码现在的样子

 char *endPtr;
 errno = 0;
 long result = strtol(str, &endPtr, 10);

 if(errno == ERANGE)
 {
     // Handle Error
 }
 else if(result > INT_MAX || result < INT_MIN)
 {
    // Handle Error
 }
 else if(endPtr == str || *endPtr != '\0')
 {
     // Handle Error
 }

 num = …
Run Code Online (Sandbox Code Playgroud)

c errno strtol

7
推荐指数
1
解决办法
967
查看次数

c中“atoi”和“strtol”之间的用法差异

我已经使用atoi一年了,最近几天我遇到一个问题,该表达式:

atoi("20")给出一个值0作为输出。

当我用谷歌搜索这个问题时,我发现它已被弃用,strtol应该改用。

我发现有趣的一点是atoi内部使用strtol。那么,当我将其更改为 时,问题如何解决strtol

c

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

如何将wstring中的Unix时间戳转换为char数组中的格式化日期

首先,请以C ++的新手身份与我联系

最终目标是将日期以DDMMYY格式(例如“ 120319”)存储在char具有6个字节的数组中。

首先,我有一个wstring检索Unix时间戳,例如“ 155xxxxxxx”。

std::wstring businessday = L"155xxxxxxx"
Run Code Online (Sandbox Code Playgroud)

然后,将其转换为wchar_t*

const wchar_t* wcs = businessday.c_str();
Run Code Online (Sandbox Code Playgroud)

之后,在声明10个字节的char数组之后,将转换wchar_t*为多字节字符串。

          char buffer[10];
          int ret;

          printf ("wchar_t string: %ls \n",wcs);

          ret = wcstombs ( buffer, wcs, sizeof(buffer) );
          if (ret==32) buffer[31]='\0';
          if (ret) printf ("multibyte string: %s \n",buffer);
Run Code Online (Sandbox Code Playgroud)

因此,现在char名为的数组buffer包含Unix时间戳格式的字符串,即“ 155xxxxxxx”。

如何char使用类似DDMMYY的日期格式(即“ 120319”)将其转换为6个字节的数组?

我正在使用标准版本的C ++(MS VC ++ 6)


回应user4581301的回答

long myLong = std::stol( buffer );
time_t timet = (time_t)myLong; …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++-6

5
推荐指数
0
解决办法
225
查看次数

使用atof功能有什么问题?

int main()
{
    char str[10]="3.5";
    printf("%lf",atof(str));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我在ideone.com上测试的一个简单代码.我得到的输出为

-0.371627
Run Code Online (Sandbox Code Playgroud)

c atof

4
推荐指数
1
解决办法
7177
查看次数

如何阻止用户在C中输入char作为int输入

这是我的代码的一部分:

    printf("\nEnter amount of adult tickets:");
    scanf("%d", &TktAdult);
    while (TktAdult<0){
        printf("\nPlease enter a positive number!");
        printf("\nEnter amount of adult tickets:");
        scanf("%d", &TktAdult);
    }
Run Code Online (Sandbox Code Playgroud)

现在它只能阻止用户输入负值,但是如何添加它以便它也阻止用户输入char?

c user-input

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

当我尝试打印char指针时,为什么我的程序崩溃了

所以我为我的C类创建了这个程序,它可以创建一个函数来告诉你字符串中某个数字位置的字符.

char charAt( char * string, int position );

int main( int argc, char * argv[ ] ) {

    int pos = atoi( argv[3] );

    if( strcmp( argv[1], "charAt" ) == 0 )
    {
        printf( "%s", charAt( argv[2], pos ) );
    }    
}



char charAt( char *string, int position ){
    int count = 0;
    while( count != position ){
        string++;
        count++;
    }

    return *string;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,在我使用命令行运行它时没有显示错误

name charAt string 3
Run Code Online (Sandbox Code Playgroud)

它崩溃了

printf( "%s", charAt( argv[2], pos) );
Run Code Online (Sandbox Code Playgroud)

那一行为什么当我将char指针传递给printf函数时它会崩溃?

c

0
推荐指数
1
解决办法
90
查看次数

标签 统计

c ×8

c++ ×5

string ×3

atoi ×2

arrays ×1

atof ×1

errno ×1

int ×1

split ×1

strtol ×1

substring ×1

user-input ×1

visual-c++-6 ×1