我从 C++ 数据文件中获得了一些信息行。一项信息是 12 个字符长的数字。如何将其从字符串转换为 long long (我认为 long long 最适合此操作)而不丢失数据?
最佳答案
在C++中,没有long long
数据类型。 It's available in C99 。但是,您可以使用 int64_t
。包括 <stdint.h>
.
使用boost::lexical_cast
将字符串转换为 int64_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;
}
测试代码:
int main() {
try{
std::cout << convert("68768768") << std::endl;
std::cout << convert("+68768768") << std::endl;
std::cout << convert("-68768768") << std::endl;
std::cout << convert("68768768x") << std::endl;
}catch(const std::exception &e)
{
std::cout << e.what() << std::endl;
}
return 0;
}
输出:
68768768
68768768
-68768768
invalid argument
关于c++ - 将 ASCII 字符串转换为 long long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370887/