我的程序存在一些问题,我想要做的是生成md5
密码,然后将其保存到文本文件中,这部分对我不起作用,("表达式无效空指针")任何帮助将不胜感激。
#include <iostream>
#include <istream>
#include <string>
#include <sstream>
#include <fstream>
#include <iterator>
#include "s_encrypt.h"
#include "encrypt_copy.h"
using namespace std;
int main(int argc, char *argv[])
{
string password = "";
cout << "Please enter a password to be encrypted\n";
getline(cin, password);
cout << "MD5 Encryption of " << password << " " << "is this" << " " << md5(password);
cout << "Saving MD5 generated password to text file";
std::string p = md5(password);
CopyEncryptedPw(p);
return 0;
}
#include <istream>
#include <iostream>
#include <fstream>
#include <string>
#include "encrypt_copy.h"
using namespace std;
std::string CopyEncryptedPw(std::string pass)
{
fstream outfile;
outfile.open("C:\encrypted_pass.txt", ios::out);
outfile << pass;
return 0;
}
#pragma once
#ifndef ENCRYPT_H
#define ENCRYPT_H
std::string CopyEncryptedPw(std::string pass);
#endif
答案 0 :(得分:4)
您的代码存在两个问题:
问题1:
outfile.open("C:\encrypted_pass.txt", ios::out);
如果我们假设您的操作系统是Windows,则应该是:
outfile.open("C:\\encrypted_pass.txt", ios::out);
此外,正斜杠可用于标准流函数:
outfile.open("C:/encrypted_pass.txt", ios::out);
问题2:
对于应该返回std::string
的函数,您返回0。
std::string CopyEncryptedPw(std::string pass)
{
//...
return 0; // <-- This is bad
}
此代码在返回时表现出未定义的行为,因为会发生的情况是将0分配给std::string
返回值,将0分配给std::string
是未定义的行为。
返回字符串类型(或可转换为std::string
的类型),或返回int
:
int CopyEncryptedPw(std::string pass)
{
fstream outfile;
outfile.open("C:\\encrypted_pass.txt", ios::out);
outfile << pass;
return 0;
}
您还可以使用void
函数不返回任何内容,但您可能需要int
返回值,例如,返回错误代码(或OK指示符)。