问题描述
- 关于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的标准编译
解决方案
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
}
解决方案三:
我在VS2013运行,没有问题。
解决方案四:
cout << i;改成cout << i<<endl;更好。带回车。
cout << i;也正确
解决方案五:
stoi大致就是格式化字符串的功能,有什么问题?
时间: 2024-08-04 06:31:34