2015-03-13 117 views
-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*)'|

如何解决呢?

+2

这错误应该是相当自我解释,如果你只是*阅读*。 – 2015-03-13 17:02:06

+0

这对于一个微不足道的问题来说,主要是很多不相关的代码。你应该尝试构建一个MCVE。 – juanchopanza 2015-03-13 17:02:18

+0

系统采用'char *'而不是'std :: string'。使用'fold.c_str()'将'char *'传递给'system()'。 – NathanOliver 2015-03-13 17:03:32

回答

相关问题