Estoy acostumbrado a idiomas de nivel superior (java, python, etc.), donde esto es obvio. Estoy tratando de pasar una cadena que el usuario ingresa a cin, el nombre de un archivo para abrir. Parece que hay algún tipo de error de locura en el puntero y mi código no se compilará. Eliminé parte de mi código para hacerlo más claro.Al pasar una cadena 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;
}
Aquí está el error de tiempo de compilación.
<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>
(Sé que hay bibliotecas de hash MD5, pero estoy tratando de aprender acerca de cómo funciona el hash, y la colisión con el tiempo hash)
Tome sus números de línea y espaciado adicional antes de publicar. Hace que sea difícil copiar y pegar el código para la prueba. –
@LokiAstari, lo descubrí demasiado tarde, pero en la mayoría de los editores puedes hacer Ctrl + Alt + Selección para seleccionar las columnas con los números y eliminarlos todos a la vez. Me ahorró mucho tiempo desde que me enteré. – chris