当前位置: 首页 > wzjs >正文

网站建设广告词网络推广和网站推广

网站建设广告词,网络推广和网站推广,新势力网站建设,中国十大进出口公司排名两个将字符串转为int的方法 atoi&#xff08;C语言&#xff09; atoi 是 C 库中的一个函数&#xff0c;它定义在 <cstdlib> 头文件里。其作用是把一个字符串转换为对应的整数。 /* Convert a string to an integer. */ extern int atoi (const char *__nptr)__THROW …

两个将字符串转为int的方法

atoi(C语言)

atoi 是 C 库中的一个函数,它定义在 <cstdlib> 头文件里。其作用是把一个字符串转换为对应的整数。

/* Convert a string to an integer.  */
extern int atoi (const char *__nptr)__THROW __attribute_pure__ __nonnull ((1)) __wur;

转换的原则如下:
此函数接收一个以空字符 '\0' 结尾的字符串 str 作为参数,然后尝试把该字符串转换为一个 int 类型的整数。

  1. 该函数会跳过字符串开头的空白字符(像空格、制表符、换行符等)。
  2. 接着,它会识别一个可选的正负号(+ 或者 -)。
  3. 随后,它会尽可能多地读取数字字符,直到遇到非数字字符或者字符串结束符 ‘\0’。
  4. 最后,它会把读取到的数字字符转换为整数并返回。要是字符串里没有有效的数字,或者字符串仅包含空白字符,函数会返回 0。

下面是示例代码:

    const char* str1 = "123";const char* str2 = "   -456";const char* str3 = "abc123";const char* str4 = "  789abc";int num1 = atoi(str1);int num2 = atoi(str2);int num3 = atoi(str3);int num4 = atoi(str4);std::cout << "str1 转换结果: " << num1 << std::endl;std::cout << "str2 转换结果: " << num2 << std::endl;std::cout << "str3 转换结果: " << num3 << std::endl;std::cout << "str4 转换结果: " << num4 << std::endl;

转换结果如下:

str1 转换结果: 123
str2 转换结果: -456
str3 转换结果: 0
str4 转换结果: 789

对于 str1,它是一个纯粹的数字字符串 “123”,所以 atoi 会把它转换为整数 123。
对于 str2,字符串开头有空白字符,随后是负号和数字,atoi 会忽略空白字符,识别负号,然后把数字转换为 -456。
对于 str3,字符串开头没有数字,所以 atoi 会返回 0。
对于 str4,字符串开头有空白字符,接着是数字,atoi 会忽略空白字符,把数字 789 转换为整数并返回。

atoi的设计有很浓的C语言设计风格,你甚至不知道返回0是因为失败了还是因为原来的字符串本身就是0.

std::stoi

std::stoi 是 C++ 标准库 <string> 中的函数。除了名字不同以外,两个函数有以下不同点:

atoistd::stoi
位置<stdlib.h><cstdlib><string>
函数原型extern int atoi (const char *__nptr)inline int stoi(const string& __str, size_t* __idx = 0, int __base = 10)
失败返回0抛出异常

依然是上面的例子:

    const std::string str1 = "123";const std::string str2 = "   -456";const std::string str3 = "abc123";const std::string str4 = "  789abc";try{int n1 = std::stoi(str1);std::cout << "new str1 转换结果: " << n1 << std::endl;}catch (std::exception &e){std::cout << "new str1 转换结果: " << e.what() << std::endl;}try{int n1 = std::stoi(str2);std::cout << "new str2 转换结果: " << n1 << std::endl;}catch (std::exception &e){std::cout << "new str2 转换结果: " << e.what() << std::endl;}try{int n1 = std::stoi(str3);std::cout << "new str3 转换结果: " << n1 << std::endl;}catch (std::exception &e){std::cout << "new str3 转换结果: " << e.what() << std::endl;}try{int n1 = std::stoi(str4);std::cout << "new str4 转换结果: " << n1 << std::endl;}catch (std::exception &e){std::cout << "new str4 转换结果: " << e.what() << std::endl;}

第三个因为开头是非数字字符,转换失败抛异常:

new str1 转换结果: 123
new str2 转换结果: -456
new str3 转换结果: stoi
new str4 转换结果: 789

__idx参数的设计也很有C语言的风格,它存储了第一个未被转换的字符的位置。

    try{size_t end;int n1 = std::stoi(str4, &end);std::cout << "new str4 转换结果: " << n1 << " End pos: " << end << std::endl;}catch (std::exception &e){std::cout << "new str4 转换结果: " << e.what() << std::endl;}

第五个字符就不是数字了,就停在这里。

new str4 转换结果: 789 End pos: 5
http://www.dtcms.com/wzjs/170986.html

相关文章:

  • 搜索引擎营销图片seo优化服务公司
  • 网站模板怎么做的搜索引擎收录查询
  • 找人做logo网站谷歌浏览器chrome官网
  • 锛网站手机怎么自己制作网页
  • 网易企业邮箱手机登录seo关键词排名优化品牌
  • 关键词排名seo优化7个湖北seo网站推广策略
  • 做婚恋交友网站模板中国培训网是国家公认的吗
  • 樱花草视频在线观看高清免费官网桌子seo关键词
  • 金华金东区建设局网站新网域名注册
  • 电商网站设计制作微信公众号平台官网
  • 皖icp备 网站建设站长工具seo词语排名
  • 顺德区建设局网站南宁seo排名外包
  • dw做框架网站搜索引擎入口大全
  • 网站建设与制作教程吕磊aso优化技术
  • 一个可以做行程的网站沈阳专业网站seo推广
  • 做网站如何赚流量钱怎样打百度人工客服热线
  • 网站备案网站名称怎么填提高工作效率的方法不正确的是
  • 没有数据怎么做网站俄罗斯搜索引擎推广
  • wordpress主题插件不兼容欧美seo查询
  • ipad做网站服务器营销手段有哪些
  • 泰安工程建设信息网站武汉seo外包平台
  • 好12345网址大全临沂seo全网营销
  • 潍坊网站建设报价营销策划师
  • 旅游网站建设方案书百姓网推广电话
  • 做泵阀生意到哪个网站福建seo搜索引擎优化
  • web是网站还是网页seo系统培训哪家好
  • ppt做的好的网站我对网络营销的理解
  • 网站建设教学点美国疫情最新消息
  • 网站建设的设计思路seo优化销售话术
  • 个人网站 可以自己做服务器营销软文300字