strtoull не был объявлен в этой области при преобразовании?

Я работаю с C ++ в Eclipse CDT, и я пытаюсь преобразовать строку в uint64_t с помощью strtoull но каждый раз, когда я получаю сообщение об ошибке ниже —

..\src\HelloTest.cpp:39:42: error: strtoull was not declared in this scope

Ниже мой пример C ++

#include <iostream>
#include <cstring>
#include <string>

using namespace std;

int main() {

string str = "1234567";
uint64_t hashing = strtoull(str, 0, 0);
cout << hashing  << endl;
}

return 0;
}

Что-то не так я делаю?

-2

Решение

Почему ваше решение не работает, уже было указано другими. Но пока не было предложено хорошей альтернативы.

Попробуйте это для C ++ 03 strtoull использование вместо:

#include <string>
#include <cstdlib>

int main()
{
std::string str = "1234";
// Using NULL for second parameter makes the call easier,
// but reduces your chances to recover from error. Check
// the docs for details.
unsigned long long ul = std::strtoull( str.c_str(), NULL, 0 );
}

Или, начиная с C ++ 11, делать это прямо из std::string с помощью stoull (который является просто оберткой для вышеупомянутого, но экономит на одном включении и одном вызове функции в ваш код):

#include <string>

int main()
{
std::string str = "1234";
// See comment above.
unsigned long long ul = std::stoull( str, nullptr, 0 );
}

Никогда не используйте char[] или указатели, если у вас есть рабочая альтернатива. Темная сторона C ++, они есть. Быстрее, проще, соблазнительнее. Если, как только вы начнете идти по темному пути, он навсегда будет доминировать в вашей судьбе, поглотит вас, так и будет. 😉

1

Другие решения

структура для strtoull: strtoull (const char *, char * *, int)
Вы дали ему std :: string как указано @juanchopanza

Это решение, которое я придумал,

#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>

using namespace std;

int main() {

char str[] = "1234567";

unsigned long long ul;
char* new_pos;

charDoublePointer = 0;
ul = strtoull(str, &new_pos, 0);

cout << ul << endl;

return 0;
}

Вывод, который я получил, был: 1234567
Прямо с консоли затмения.

Также в конце вашей программы вы возвращаете 0 из области видимости с дополнительной фигурной скобкой.

0

По вопросам рекламы [email protected]