Sono abituato ai linguaggi di livello superiore (java, python ecc.), Dove questo è ovvio. Sto cercando di passare una stringa che l'utente inserisce in cin, il nome di un file da aprire. Sembra che ci sia una sorta di errore di follia del puntatore e il mio codice non verrà compilato. Ho cancellato parte del mio codice per renderlo più chiaro.Passare una stringa a 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;
}
Ecco l'errore di compilazione.
<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>
(lo so che ci sono librerie per hash MD5, ma sto cercando di conoscere come funziona l'hash, e la collisione alla fine hash)
Prendi i numeri di riga e la spaziatura extra prima di postare. Rende difficile copiare e incollare il codice per il test. –
@LokiAstari, l'ho scoperto troppo tardi, ma nella maggior parte degli editor puoi fare Ctrl + Alt + Selection per selezionare le colonne con i numeri in ed eliminarle tutte in una volta. Mi ha salvato un sacco di tempo da quando l'ho scoperto. – chris