gpt4 book ai didi

c++ - 从 std::stoi 接收到未经验证的整数值

转载 作者:行者123 更新时间:2023-12-01 14:07:43 37 4
gpt4 key购买 nike

下面这段代码抛出从 std::stoi 接收到未经验证的整数值klocwork 错误。如果 *it 包含无效范围或非整数值,则将执行 catch 块。但是我们在第二个 for 循环中遇到 klocwork 错误,因为在循环边界中使用了受污染的数据“值”。如何解决这个问题?

#include <vector>
#include <string>
#include <iostream>

int main()
{
int value = 0;
std::vector<std::string> test;
test.push_back("1");
test.push_back("2");

for (std::vector<std::string>::iterator it = test.begin(); it != test.end(); ++it)
{
try
{
value = std::stoi(*it);
}
catch (...)
{
return -1;
}

for (int i = 0; i < value; i++)
{
//...
//...
}

}

return 0;
}

最佳答案

我已经在 Klocwork 版本 2020.2 上尝试了相同的代码,但在代码中没有看到任何问题。可能,这个误报可能已经在最新版本的 Klocwork 中解决了。
请尝试使用 Klocwork 最新版本测试代码。

关于c++ - 从 std::stoi 接收到未经验证的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48643930/

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