-2
我有以下激发文件夹锁定的代码:不能将'std :: string {aka std :: basic_string}'转换为'const char *'参数'1'到'int system(const char *)
#include<iostream>
#include<conio.h>
#include<windows.h>
#include<string>
#include<fstream>
#include<process.h>
#define max 100
using namespace std;
struct folder_all{
std::string name;
std::string location;
};
int main(){
folder_all folder[max];
int n;
cout<<"\n\n\t\t\tFolder Locker"<<endl;
if (std::ifstream("data"))
{
cout<<"\n\n\tYour Folders are safe with us"<<endl;
cout<<"Enter your password to unlock(Password will not be visible): ";
HANDLE inHandle = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(inHandle, &mode);
SetConsoleMode(inHandle, mode & ~ENABLE_ECHO_INPUT);
std::string inpass;
cin>>inpass;
SetConsoleMode(inHandle, mode);
}
else{
cout<<"\nNo. of folders to be locked: ";
cin>>n;
HANDLE inHandle = GetStdHandle(STD_INPUT_HANDLE);
DWORD mode;
GetConsoleMode(inHandle, &mode);
SetConsoleMode(inHandle, mode & ~ENABLE_ECHO_INPUT);
//read the password
std::string password;
cout<<"\nEnter the password(password will not be visible): ";
cin>>password;
/
SetConsoleMode(inHandle, mode);
cout<<"\n\n"<<endl;
for(int i=0; i<n; i++){
cout<<"Enter folder "<<i+1<<" details:"<<endl<<endl;
cout<<"Folder Name: ";
cin>>folder[i].name;
cout<<"Folder Location: "<<endl<<"\tEnter in following format 'Drivelabel://parent-folder/child-folder/folder'"<<endl;
cout<<"\tfor example C://desktop/pics/your-folder"<<endl;
cin>>folder[i].location;
}
std::ofstream o("data");
o <<password<<std::endl;
for(int j=0; j<n; j++){
o<<folder[j].location<<std::endl;
}
system("attrib +h +s +r data");
std::string fold;
for(int k=0; k<n; k++){
std::string f = folder[k].location ;
fold = "attrib +h +s +r " + f + " ";
system(fold); //this line gives me a error
}
cout<<"\nYour folder/s have been locked"<<endl;
cout<<"\nThis application will now exit"<<endl;
exit(0);
}
}
该代码会要求用户输入密码,然后将其保存在文件数据中并隐藏文件。当用户输入要锁定的文件夹的位置时,也会隐藏它。但它不为1级的错误 误差正常工作是:
main.cpp|79|error: cannot convert 'std::string {aka std::basic_string}' to 'const char*' for argument '1' to 'int system(const char*)'|
如何解决呢?
这错误应该是相当自我解释,如果你只是*阅读*。 – 2015-03-13 17:02:06
这对于一个微不足道的问题来说,主要是很多不相关的代码。你应该尝试构建一个MCVE。 – juanchopanza 2015-03-13 17:02:18
系统采用'char *'而不是'std :: string'。使用'fold.c_str()'将'char *'传递给'system()'。 – NathanOliver 2015-03-13 17:03:32