C ++字符串 - > int不太有效

时间:2013-11-06 14:52:38

标签: c++ string int long-integer

我有一个任务来编写一种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;
}

这似乎仅适用于数字的某个阈值。

正如你在这里看到的:
enter image description here

所以看来int太小了。但是long int或unsigned long int也是如此......请问该怎么做?

提前致谢。

3 个答案:

答案 0 :(得分:0)

long long数据类型用作intlong大小相同

答案 1 :(得分:0)

如果您使用unsigned long long int,则最多可以包含18446744073709551615。

使用ULLONG_MAX检查您在平台上可以获得的最大值。

答案 2 :(得分:0)

使用long long作为_int64的等效内容。 Also watch this.