我有一个任务来编写一种ID检查器。用户输入他的身份证号码,它应该检查它是否有效并评估其他一些东西(性别,年龄等)。
ID号由用户以字符串形式给出,如下所示:123456/7890
我的任务是删除'/',然后将字符串转换为int并对其进行一些基本计算,例如if(%11==0){...}
。而且我被卡在字符串转换为int。
这是我的代码:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string id;
int result;
cout << "Enter an identification number:" << endl;
cin >> id;
//Check if the input has "slash" on the 6th position. If so, consider the input valid and remove the slash.
if (id.at(6) == '/')
{
id.erase(id.begin() +6);
}else cout << "Invalid input." << endl;
cout << "\n" << id << endl; //cout the ID number without the slash
stringstream ss(id); //convert the string to int, so we can use it for calculations
ss >> result;
cout << "\n" <<result << endl;
return 0;
}
这似乎仅适用于数字的某个阈值。
正如你在这里看到的:
所以看来int太小了。但是long int或unsigned long int也是如此......请问该怎么做?
提前致谢。
答案 0 :(得分:0)
将long long
数据类型用作int
,long
大小相同
答案 1 :(得分:0)
如果您使用unsigned long long int,则最多可以包含18446744073709551615。
使用ULLONG_MAX检查您在平台上可以获得的最大值。
答案 2 :(得分:0)
使用long long
作为_int64
的等效内容。
Also watch this.