2 changsheng s Changsheng_S 于 2015.06.10 10:17 提问

关于c++string中的stoi用法

#include
#include
using namespace std;

int main()
{
string str = "89";
int i = stoi(str);
cout << i;
return 0;
}
我的编译器是codeblocks13.12 已经调过按照c++11的标准编译

5个回答

oyljerry
oyljerry   Ds   Rxr 2015.06.10 14:28
已采纳

stoi当字符串不符合规范时,会抛出异常,所以你应该捕获异常来做

 #include <stdexcept>

std::string y = "2323298347293874928374927392374924"
int x;

try {
  x = stoi(y);
}
catch(std::invalid_argument& e){
  // if no conversion could be performed
}
catch(std::out_of_range& e){
  // if the converted value would fall out of the range of the result type 
  // or if the underlying function (std::strtol or std::strtoull) sets errno 
  // to ERANGE.
}
catch(...) {
  // everything else
}
caozhy
caozhy   Ds   Rxr 2015.06.10 10:27

图片说明

Changsheng_S
Changsheng_S 不好意思,是我文件编译的问题,谢谢您的回答。
2 年多之前 回复
Changsheng_S
Changsheng_S 回复Changsheng_S:
2 年多之前 回复
Changsheng_S
Changsheng_S 请问stoi是否只能在*main文件内使用,我用在了类cpp文件显示报错,刚刚重新建了一个项目,在main文件中就可以了。
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.10 10:27

我在VS2013运行,没有问题。

frank_20080215
frank_20080215   2015.06.10 12:33

cout << i;改成cout << i<<endl;更好。带回车。
cout << i;也正确

a1193561652
a1193561652   Rxr 2015.06.10 13:19

stoi大致就是格式化字符串的功能,有什么问题?

Csdn user default icon
上传中...
上传图片
插入图片