当前位置:  开发笔记 > 编程语言 > 正文

如何将C++字符串转换为int?

如何解决《如何将C++字符串转换为int?》经验,为你挑选了2个好方法。

使用C++流.

std::string       plop("123");
std::stringstream str(plop);
int x;

str >> x;

/* Lets not forget to error checking */
if (!str)
{
     // The conversion failed.
     // Need to do something here.
     // Maybe throw an exception
}

PS.这个基本原理是boost库的lexical_cast<>工作原理.

我最喜欢的方法是提升 lexical_cast<>

#include 

int x = boost::lexical_cast("123");

它提供了一种在字符串和数字格式之间进行转换的方法.在它下面使用一个字符串流,所以任何可以编组成流然后从流中解组的东西(看看>>和<<运算符).



1> Randy Sugian..:
#include 

// st is input string
int result;
stringstream(st) >> result;


然后检查错误:(stringstream(st)>> result)?cout <<结果:cerr <<"你输了";
如果有错误怎么办?假设字符串中没有数字("hello!"而不是"5").

2> Martin York..:

使用C++流.

std::string       plop("123");
std::stringstream str(plop);
int x;

str >> x;

/* Lets not forget to error checking */
if (!str)
{
     // The conversion failed.
     // Need to do something here.
     // Maybe throw an exception
}

PS.这个基本原理是boost库的lexical_cast<>工作原理.

我最喜欢的方法是提升 lexical_cast<>

#include 

int x = boost::lexical_cast("123");

它提供了一种在字符串和数字格式之间进行转换的方法.在它下面使用一个字符串流,所以任何可以编组成流然后从流中解组的东西(看看>>和<<运算符).


否.如果流操作符无法从str中提取数字,则设置坏位.在布尔上下文中使用它(如上所述)将通过返回可转换为bool的对象来测试流是否正常.如果我测试'x',那么如果'x'中的值为0,它将失败.如果流未能提取任何内容,则'x'的值未定义.
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有