Я работаю с 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;
}
Что-то не так я делаю?
Почему ваше решение не работает, уже было указано другими. Но пока не было предложено хорошей альтернативы.
Попробуйте это для 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 ++, они есть. Быстрее, проще, соблазнительнее. Если, как только вы начнете идти по темному пути, он навсегда будет доминировать в вашей судьбе, поглотит вас, так и будет. 😉
структура для 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 из области видимости с дополнительной фигурной скобкой.