问一个字符串的问题

mul 2006-05-23 03:45:16
看一个库(poco),里面的NumberParser(数字=》字符串)都类似如下代码:
int NumberParser::parse(const std::string& s)
{
int result;
if (tryParse(s, result))
return result;
else
throw SyntaxException("Not a valid integer", s);
}


bool NumberParser::tryParse(const std::string& s, int& value)
{
return sscanf(s.c_str(), "%d", &value) == 1; // <<<<<<<<<<<
}

这里类似sscanf(s.c_str(), "%d", &value)这样的写法安全吗?
本来不想问的,想想这个库挺不错的,还是求证一下。
...全文
167 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mul 2006-05-23
  • 打赏
  • 举报
回复
<< sscanf(s.c_str(), "%d", &value)
s能够自动分配足够的内存供sscanf使用吗?
sscanf会发生越界吗?

std::string的内存分配的策略是什么?
fallinleave 2006-05-23
  • 打赏
  • 举报
回复
安全不安全就看他处理事情的能力上:
第一种正常的比如 s="333",正确
第二种s="333sdfsdfd",正确
第三种s="sddsss",tryParse返回false,抛出异常
第四种s=null, tryParse返回false,抛出异常

综上所述,我觉得安全
sharpdew 2006-05-23
  • 打赏
  • 举报
回复
既然处理异常了,可以安全使用。
0黄瓜0 2006-05-23
  • 打赏
  • 举报
回复
up

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧