ошибка C2064: термин не оценивает функцию, принимающую 3 аргумента - PullRequest
1 голос
/ 23 октября 2019

Среда: Visual Studio 2008 Professional Edition

Я пытаюсь отладить шестнадцатеричное в десятичное преобразование, но, к сожалению, получаю "термин не оценивает функцию, принимающую 3 аргумента", эту ошибку. Можеткто-нибудь подскажет, как решить эту проблему?

код:

#include <string>
using namespace std;

int main()
{
    int stoi;
    int number = 0;

    string hex_string = "12345";
    number = stoi(hex_string, 0, 16);
    cout << "hex_string: " << hex_string << endl;
    cout << "number: " << number << endl;

    return 0;
}

Ответы [ 3 ]

2 голосов
/ 23 октября 2019

Вот почему вы не должны делать using namespace std;. Избавьтесь от него и исправьте программу, поместив std:: перед всем в пространстве имен std.

#include <iostream>
#include <string>

int main()
{
    int stoi;
    int number = 0;

    std::string hex_string = "12345";
    number = std::stoi(hex_string, 0, 16);
    std::cout << "hex_string: " << hex_string << std::endl;
    std::cout << "number: " << number << std::endl;

    return 0;
}

Вы также можете просто переименовать ваше целое число stoi, чтобы оно не конфликтовало с std::stoi, но Настоятельно рекомендуется , чтобы в коде не было using namespace std;.

Если вы вообще не можете использовать stoi, потому что Visual Studio 2008 не поддерживает C ++ 11 и вы не можете перейти на более новую версию, см. здесь для альтернатив. Но, в конце концов, было бы лучше установить более новую IDE, если это возможно.

1 голос
/ 23 октября 2019

Поскольку stoi является функцией от string library, вы не переопределяете стои как int stoi. Удалить int stoi это будет успешно.

Полный код, подобный этому

#include <string>
#include <iostream>
using namespace std;

int main()
{

    int number = 0;

    string hex_string = "12345";
    number = stoi(hex_string, nullptr, 16);
    cout << "hex_string: " << hex_string << endl;
    cout << "number: " << number << endl;

    return 0;
}
0 голосов
/ 23 октября 2019

Спасибо вам всем за ваш ответ! окончательный код, который успешно отлажен в Visual Studio 2008 для преобразования шестнадцатеричного в десятичное

#include <iostream>
using namespace std ;
#include <sstream>

int wmain() {
int binNumber ;
unsigned int decimal;
string hexString = "0x3d"; //you may or may not add 0x before
stringstream myStream;
myStream <<hex <<hexString;
myStream >>binNumber;
cout <<binNumber <<decimal;
return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...