如何解析包含整数的字符串,并检查是否大于C++中的最大值 我想在C++中确定一个字符串是否包含一个在0—uTimax范围内的数字。 我试过atoi等,但这不能解决这个问题。 例如,字符串42949672963将无法通过测试 有人有什么建议吗?

如何解析包含整数的字符串,并检查是否大于C++中的最大值 我想在C++中确定一个字符串是否包含一个在0—uTimax范围内的数字。 我试过atoi等,但这不能解决这个问题。 例如,字符串42949672963将无法通过测试 有人有什么建议吗?,c++,string,strtoull,C++,String,Strtoull,现代的方法是使用std::stoi、std::stoll等 字符串和wstring有重载,可以处理较大的大小 现代的方法是使用std::stoi、std::stoll等 字符串和wstring有重载,可以处理较大的大小 您可以在循环中逐个字符搜索字符串,每次连续出现数字时,您可以构建一个整数,同时使用Max UINT进行检查 您可以在循环中逐个字符搜索字符串,每次连续出现数字时,您都可以构建一个整数,同时使用Max UINT进行检查 > p>您可以使用标准C++函数STD::StruTl,然后检

现代的方法是使用std::stoi、std::stoll等

字符串和wstring有重载,可以处理较大的大小


现代的方法是使用std::stoi、std::stoll等

字符串和wstring有重载,可以处理较大的大小


您可以在循环中逐个字符搜索字符串,每次连续出现数字时,您可以构建一个整数,同时使用Max UINT进行检查

您可以在循环中逐个字符搜索字符串,每次连续出现数字时,您都可以构建一个整数,同时使用Max UINT进行检查

> p>您可以使用标准C++函数STD::StruTl,然后检查转换后的数字是否不大于STD::NoimeCixLime::Max? 比如说

#include <iostream>
#include <string>
#include <stdexcept>
#include <limits>

int main() 
{
    std::string s( "42949672963" );
    unsigned int n = 0;

    try
    {
        unsigned long tmp = std::stoul( s );

        if ( std::numeric_limits<unsigned int>::max() < tmp )
        {
            throw std::out_of_range( "Too big number!" );
        }

        n = tmp;
    }
    catch ( const std::out_of_range &e )
    {
        std::cout << e.what() << '\n';
    }

    std::cout << "n = " << n << '\n';

    return 0;
}
您还可以为无效的数字表示添加一个捕获


另一种方法是使用标准的C函数Strutl,如果您不想处理异常。

< P>可以使用标准C++函数STD::StruTL,然后检查转换后的数是否不大于STD::NoimeCiLime::Max。 比如说

#include <iostream>
#include <string>
#include <stdexcept>
#include <limits>

int main() 
{
    std::string s( "42949672963" );
    unsigned int n = 0;

    try
    {
        unsigned long tmp = std::stoul( s );

        if ( std::numeric_limits<unsigned int>::max() < tmp )
        {
            throw std::out_of_range( "Too big number!" );
        }

        n = tmp;
    }
    catch ( const std::out_of_range &e )
    {
        std::cout << e.what() << '\n';
    }

    std::cout << "n = " << n << '\n';

    return 0;
}
您还可以为无效的数字表示添加一个捕获

如果不想处理异常,另一种方法是使用标准C函数strtoul。

如果超出范围,则抛出异常。如果超出范围,则引发异常。