Tôi đã quen với các ngôn ngữ cấp cao hơn (java, python, vv), nơi điều này đã chết rõ ràng. Tôi đang cố gắng để vượt qua một chuỗi người dùng đầu vào để cin, tên của một tập tin để mở. Dường như có một số loại lỗi con trỏ điên rồ, và mã của tôi sẽ không biên dịch. Tôi đã xóa một số mã của mình để làm rõ hơn.Chuyển chuỗi tới 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;
}
Đây là lỗi thời gian biên dịch.
<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>
(Tôi biết rằng có những thư viện cho băm md5, nhưng tôi đang cố gắng để tìm hiểu về cách băm hoạt động, và va chạm cuối cùng băm)
Lấy số dòng của bạn và giãn cách thêm trước khi đăng. Nó làm cho nó khó khăn để sao chép và dán mã của bạn để thử nghiệm. –
@LokiAstari, tôi đã tìm thấy nó quá muộn, nhưng trong hầu hết các biên tập viên, bạn có thể thực hiện Ctrl + Alt + Selection để chọn các cột có số và xóa chúng cùng một lúc. Đã dành cho tôi rất nhiều thời gian kể từ khi tôi phát hiện ra nó. – chris