私は高級言語(java、pythonなど)に慣れています。私はユーザーが入力した文字列をcinに渡そうとしています。これは開くファイルの名前です。ポインタの狂気のエラーのいくつかの並べ替えが表示され、私のコードはコンパイルされません。 私はコードを削除してより明確にしました。文字列を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;
}
ここにコンパイル時のエラーがあります。
<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>
は(私はMD5ハッシュ用のライブラリがあることを知っているが、私はハッシュの仕組みについて学ぶためにしようとしています、そして最終的にはハッシュ衝突)
転記する前に、行番号と余白を取り除いてください。テスト用にコードをコピー&ペーストするのは難しくなります。 –
@ LokiAstari、私はそれが遅すぎると分かったが、ほとんどのエディタでは、Ctrl + Alt + Selectionを使って数字の列を選択し、それらを一度にすべて削除することができます。私はそれについて知って以来、私に多くの時間を節約しました。 – chris