Jestem przyzwyczajony do języków wyższego poziomu (java, python itp.), Gdzie jest to oczywiste. Próbuję przekazać ciąg wejściowy użytkownika do cin, nazwę pliku do otwarcia. Wygląda na to, że istnieje jakiś błąd szaleństwa wskaźnika, a mój kod się nie skompiluje. Usunąłem część kodu, aby było bardziej zrozumiałe.Przekazywanie ciągu do pliku file.open();
#include <iostream>
#include <fstream>
using namespace std;
string hash(string filename);
int main(){
cout << "Please input a file name to hash\n";
string filename;
cin >> filename;
cout <<hash(filename);
return 0;
}
string hash(string filename){
file.open(filename);
if(file.is_open()){
file.close();
}
return returnval;
}
Oto błąd czasu kompilacji.
<code>
$ g++ md5.cpp
md5.cpp: In function ‘std::string hash(std::string)’:
md5.cpp:22: error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::open(std::string&)’
/usr/include/c++/4.2.1/fstream:518: note: candidates are: void std::basic_ifstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
</code>
(wiem, że istnieją biblioteki dla hashe MD5, ale próbuję dowiedzieć się, jak działa hash i ostatecznie hash kolizji)
Przed wysłaniem podaj numery linii i dodatkowe odstępy. Utrudnia to kopiowanie i wklejanie kodu do testowania. –
@LokiAstari, Znalazłem go za późno, ale w większości edytorów można zrobić Ctrl + Alt + Wybór, aby wybrać kolumny z liczbami i usunąć je wszystkie naraz. Zaoszczędził mi dużo czasu, odkąd się o tym dowiedziałem. – chris