C++ 干净字符串到 int 强制转换
C++ Clean String to int cast
据
我所知,在 c++ 中将字符串转换为 int 的常用方法是使用 sstream:
std::string inputString = "12 34";
std::istringstream istr(inputString);
int i1, i2;
istr >> i1 >> i2;
但是,如果我想确保我的代码适用于任何输入,问题是在字符串的输入或 0 之间做出决定:
std::string inputString = "TEXT 0";
std::istringstream istr(inputString);
int i1, i2;
istr >> i1 >> i2;
cout << i1 <<" != "<< i2 << endl;
我想决定用户是否输入了字符串或零,以便执行进一步的操作。有没有一种干净的方法来解决这个问题,而不使用词汇强制转换或 atoi?最好的格加德
您可以使用无效的默认值:
#include<sstream>
#include<limits>
using std::numeric_limits;
int main(){
std::string inputString = "TEXT 0";
std::istringstream istr(inputString);
int i1=numeric_limits<int>::min();
int i2=numeric_limits<int>::min();
std::string tmp;
istr >> i1;
if (i1 == numeric_limits<int>::min()) {
// extraction failed
i1 = 0;
istr.clear(); // clear error flags to allow further extraction
istr >> tmp; // consume the troublesome token
}
// same for i2
}
注意:如果numeric_limits<int>::min()
不能是有效输入,则该技术有效
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 将 int 数组转换为 std::vector<int*>
- 如何转换 int 变量并附加到常量 wchar_t*
- 类型转换<int>的舍入问题
- 在Objective-C中调用sqlite3数据库时,如何调用和转换int/NSNumber
- 转换 int -> 无符号长 长 是否由标准定义
- 简单的 int 到字符串转换..int to const char* 无效
- 如何将转换 int 除法键入为浮点数
- C++类型转换 int * 到类
- 预期的类型说明符,并且无法在初始化时转换“int*”
- 转换int并将其与char*连接
- 字符串流在转换int型时添加新行
- 转换int为字符串/char c++ /Arduino
- c# P-Invoke:如何转换INT fun(BYTE *bStream, UINT16 *nCount, const
- 类型转换(int**)和int(*)的区别
- 从"int"到"nodeType"的无效转换<int>
- 从无符号int构造对强制转换int的引用