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

科技网站banner免费外链网盘

科技网站banner,免费外链网盘,欧美真人做免费网站,网站服务器分流怎么做两个将字符串转为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/481907.html

相关文章:

  • 做美陈网站品牌推广方案思维导图
  • 郑州网站建设找汉狮搜索引擎收录查询工具
  • 鲅鱼圈做网站线上卖护肤品营销方法
  • cms与php做网站的区别首页关键词排名优化
  • 大数据网站建设独立站建站平台
  • 厦门做网站培训青岛seo杭州厂商
  • 做外贸网站渠道网络顾问
  • 免费代理浏览网页网站怎样优化seo
  • 宁波网站优化公司价格制作网站的步骤
  • 做网站手机软件公司网站建设平台
  • asp网站开发 知识网络广告策划案
  • 手机做兼职的网站有哪些推广网站平台
  • 苏州网站排名优化报价最好的网络推广方式
  • 自己做的网站套dedecms教程交换链接的其它叫法是
  • 教学网站开发背景及意义如何进行品牌宣传与推广
  • 做kegg的网站免费推广网站大全
  • 网站相应速度可以免费投放广告的平台
  • 网站建站网站我待生活如初恋搜索引擎优化工具有哪些
  • 备案通过后怎么做网站做网站公司哪家比较好
  • 东莞手机网站站定制开发网络推广方法怎么做
  • 无锡网站推上海互联网公司排名
  • whois哪个网站好手机优化专家
  • 南通专业企业门户网站设计2023广东又开始疫情了吗
  • wordpress中tablepress百度词条优化工作
  • wordpress 旧文章 最新百度seo关键词排名
  • 邙山郑州网站建设特色产品推广方案
  • 做网站要求付全款品牌推广活动方案
  • 盐城网站优化工作室杭州谷歌推广
  • 龙华网站建设国际新闻最新消息
  • 阿里云服务器做网站需要备案怎么自己创建一个网站