-1

何が起こっているのかわかりません。プログラムを数回コンパイルしましたが、すべてうまくいきました。しかし、挿入したので#include <unordered_map>、「cout で宣言されていない識別子... getline のオーバーロードされた関数のインスタンスがありません」などのエラーが発生します。私は Visual Studio 10 を使用しています。また、誰かが を適切に初期化する方法を教えてくれればunordered_map、それは素晴らしいことです。

#include "stdafx.h"
#include<string>
#include <iostream>
#include <sstream>
#include <unordered_map>

using namespace std;

unordered_map<string, dictionary * > Mymap;

int _tmain(int argc, _TCHAR* argv[])
{
    string option;
    string pass;
    int choice=0;

    unsigned char hash[20];
    char hex_str[41];

    while(choice!=4)
    {
        cout<< "Select an option:"<< endl;
        cout<<"1. Basic Hashing"<<endl;
        cout<<"2. Load Dictionary"<<endl;
        cout<<"3. Decrypt"<<endl;
        cout<<"4. Exit" <<endl;

        getline(cin,option);
        stringstream(option) >> choice;

        if(choice == 1)
        {
            cout<<"Please enter a sample password"<<endl;
            getline(cin,pass);
            const char * c= pass.c_str();
            sha1::calc(c,pass.length(), hash);
            sha1::toHexString(hash,hex_str);
            cout<<endl;
            cout<<"Hashed: "<< hex_str<<endl;
        }
        else if(choice ==2)
        {
            string answer;
            cout<<"Would you like to use the default dictionary file(d8.txt). Press y or n"<<endl;
            getline(cin,answer);
        }
    }
    return 0;
}
4

1 に答える 1

1

これを使用しない理由については、この投稿を参照してください。using namespace std以下のコードはまだコンパイルされませんが、sha1おそらくどこかにある定義の欠落に関するエラーのみがあります。Mymap(そして、エラーを減らすために、構造体の定義をすぐ上に追加しました)。

エラーに関しては、通常、C++ コンパイラは最初に発生したエラーについて意味のある説明を表示しますが、その後はおかしなことになる可能性があるため、一度に 1 つずつ修正して、明確になるようにします。

#include "stdafx.h"
#include <string>
#include <iostream>
#include <sstream>
#include <unordered_map>

typedef struct dictionary{ std::string word; char * hash; char *hex; } a_dictionary;
std::unordered_map<std::string, a_dictionary * > Mymap;

int _tmain(int argc, _TCHAR* argv[])
{
    std::string option;
    std::string pass;
    int choice=0;

    unsigned char hash[20];
    char hex_str[41];

    while(choice!=4)
    {
        std::cout<< "Select an option:"<< std::endl;
        std::cout<<"1. Basic Hashing"<<std::endl;
        std::cout<<"2. Load Dictionary"<<std::endl;
        std::cout<<"3. Decrypt"<<std::endl;
        std::cout<<"4. Exit" <<std::endl;

        getline(std::cin,option);
        std::stringstream(option) >> choice;

        if(choice == 1)
        {
            std::cout<<"Please enter a sample password"<<std::endl;
            getline(std::cin,pass);
            const char * c= pass.c_str();
            sha1::calc(c,pass.length(), hash);
            sha1::toHexstd::string(hash,hex_str);
            std::cout<<std::endl;
            std::cout<<"Hashed: "<< hex_str<<std::endl;
        }
        else if(choice ==2)
        {
            std::string answer;
            std::cout<<"Would you like to use the default dictionary file(d8.txt). Press y or n"<<std::endl;
            getline(std::cin,answer);
        }
    }
    return 0;
}
于 2013-02-26T14:19:06.977 に答える