gpt4 book ai didi

c++ - 使用 isdigit 从字符串中提取一个 int

转载 作者:行者123 更新时间:2023-11-28 05:24:17 25 4
gpt4 key购买 nike

我需要解析一个字符串并将第一个数字系列转换为一个整数。

函数如下:

    int get_int (string to) {
string temp = "";
for ( int i = 0 ; i < to.length(); i++) {
if (isdigit((unsigned char)to[i])) {
cerr << to[i];
temp = temp+to[i];
}
i++;
}
return stoi(temp);
}

我正在传递它:“测试:19764\n”。但是,我得到输出 174(打印和返回值)。这是怎么回事?

谢谢,卡梅伦

最佳答案

问题是:额外的条件增量

int get_int (string to) {
string temp = "";
for ( int i = 0 ; i < to.length(); i++) { <--
if (isdigit((unsigned char)to[i])) {
cerr << to[i];
temp = temp+to[i];
}
i++; <--
}
return stoi(temp);
}

如果我真的必须使用 isdigit 来做到这一点,我宁愿使用一些类似的东西

int get_int(string to) { // Assumes a base10 representation
int value = 0;
for (int i = 0; i < to.length(); ++i) {
if (isdigit(to[i])) {
cerr << to[i];
value = value * 10 + (to[i] - 0x30);
}
}
return value;
}

虽然不确定为什么需要将数字输出到 cerr

关于c++ - 使用 isdigit 从字符串中提取一个 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40861030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com