gpt4 book ai didi

c++ - _wtoi 返回零 : input zero or non-numerical input?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:03 25 4
gpt4 key购买 nike

_wtoi当不能转换输入,所以输入不是整数时,返回零。但同时输入可以为零。这是一种确定输入是否错误或为零的方法吗?

最佳答案

这是 C++,您应该使用 stringstream 进行转换:

#include <iostream>
#include <sstream>

int main()
{
using namespace std;

string s = "1234";
stringstream ss;

ss << s;

int i;
ss >> i;

if (ss.fail( ))
{
throw someWeirdException;
}
cout << i << endl;

return 0;
}

boost 的 lexical_cast 有一个更简洁、更简单的解决方案:

#include <boost/lexcal_cast.hpp>

// ...
std::string s = "1234";
int i = boost::lexical_cast<int>(s);

如果你坚持使用 C,sscanf 可以干干净净。

const char *s = "1234";
int i = -1;

if(sscanf(s, "%d", &i) == EOF)
{
//error
}

您也可以使用 strtol ,但需要一点思考。是的,它会为两个评估为零的字符串和错误返回零,但它还有一个(可选)参数 endptr 它将指向已转换的数字之后的下一个字符:

const char *s = "1234";
const char *endPtr;
int i = strtol(s, &endPtr, 10);

if (*endPtr != NULL) {
//error
}

关于c++ - _wtoi 返回零 : input zero or non-numerical input?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688805/

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