从字符串中提取以下整数的最简单方法是什么,例如:“54 232 65 12”。
如果最后一个数字是 long long int 怎么办。是否可以在没有 sstream 的情况下做到这一点
从字符串中提取以下整数的最简单方法是什么,例如:“54 232 65 12”。
如果最后一个数字是 long long int 怎么办。是否可以在没有 sstream 的情况下做到这一点
尝试这个:
#include <cstdlib>
#include <cstdio>
#include <cerrno>
#include <cstring>
int main()
{
char str[] = " 2 365 2344 1234444444444444444444567 43";
for (char * e = str; *e != '\0'; )
{
errno = 0;
char const * s = e;
unsigned long int n = strtoul(s, &e, 0);
if (errno) // conversion error (e.g. overflow)
{
std::printf("Error (%s) encountered converting:%.*s.\n",
std::strerror(errno), e - s, s);
continue;
}
if (e == s) { ++e; continue; } // skip inconvertible chars
s = e;
printf("We read: %lu\n", n);
}
}
在 C++11 中,您还可以使用std::strtoull
,它返回一个unsigned long long int
.
(现场示例。)