将ASCII字符串转换为长字符串 我从C++的一个数据文件中得到了一些信息。一个信息是一个12个字符长的数字。如何在不丢失数据的情况下将字符串转换为long-long(我认为long-long最适合这种情况)?

将ASCII字符串转换为长字符串 我从C++的一个数据文件中得到了一些信息。一个信息是一个12个字符长的数字。如何在不丢失数据的情况下将字符串转换为long-long(我认为long-long最适合这种情况)?,c++,long-integer,string,C++,Long Integer,String,一个64位整数足以表示任何12位十进制数(有足够的空间)。因此,根据您的平台,一个long就足够了。如果是这种情况,您可以使用strtol或strtoul 如果您确实发现需要一个long,请查看strtoll和strtoll一个64位整数足以表示任何12位十进制数(有足够的空间)。因此,根据您的平台,一个long就足够了。如果是这种情况,您可以使用strtol或strtoul C++,不使用长长< /COD>数据类型…但是,您可以使用int64\t。包括 使用boost::lexical\u

一个64位整数足以表示任何12位十进制数(有足够的空间)。因此,根据您的平台,一个
long
就足够了。如果是这种情况,您可以使用
strtol
strtoul


如果您确实发现需要一个
long
,请查看
strtoll
strtoll

一个64位整数足以表示任何12位十进制数(有足够的空间)。因此,根据您的平台,一个
long
就足够了。如果是这种情况,您可以使用
strtol
strtoul


C++,不使用<代码>长长< /COD>数据类型…但是,您可以使用
int64\t
。包括

使用
boost::lexical\u cast
将字符串转换为
int64\u t

或者您可以自己编写转换函数,如下所示:

int64_t convert(const std::string &s)
{
   if(s.size() == 0 ) 
       std::runtime_error error("invalid argument");
   int64_t v = 0;
   size_t i=0;
   char sign = (s[0] == '-' || s[0] == '+') ? (++i, s[0]) : '+';
   for( ; i < s.size(); ++i)
   {
      if ( s[i] < '0' || s[i] > '9' )
          throw std::runtime_error("invalid argument");
      v = v * 10 + s[i] - '0';
   }
   return sign == '-' ? -v : v;
}

在线演示:C++中的

< P>,没有<代码>长长< /Cord>数据类型。但是,您可以使用
int64\t
。包括

使用
boost::lexical\u cast
将字符串转换为
int64\u t

或者您可以自己编写转换函数,如下所示:

int64_t convert(const std::string &s)
{
   if(s.size() == 0 ) 
       std::runtime_error error("invalid argument");
   int64_t v = 0;
   size_t i=0;
   char sign = (s[0] == '-' || s[0] == '+') ? (++i, s[0]) : '+';
   for( ; i < s.size(); ++i)
   {
      if ( s[i] < '0' || s[i] > '9' )
          throw std::runtime_error("invalid argument");
      v = v * 10 + s[i] - '0';
   }
   return sign == '-' ? -v : v;
}

在线演示:

我想说,90%的人在他的平台上发现
long
只有32位,除非他使用GCC为64位系统(或其他更特殊的编译器)编译。我想说,90%的人在他的平台上发现
long
只有32位,除非他使用GCC为64位系统编译(或其他更特殊的编译器)
68768768
68768768
-68768768
invalid argument