System() no suitable conversion C++ -
i have 2 lists file names.
std::list<std::string> userfontlist; std::list<std::string>::iterator it; std::list<std::string> caatfontlist; std::list<std::string>::iterator it2; std::list<std::string> doesnthavelist;
and want compare 2 lists, , delete value matches. every seems fine until add "del /f /q /a" y.c_string().
for (it = userfontlist.begin(); !=userfontlist.end(); ++it){ for(it2 = caatfontlist.begin();it2 !=caatfontlist.end();++it2){ if(*it==*it2){ string y = *it; string k = y.c_str(); string = "del /f /q /a " + k; system(a); } } }
system(a) says have "no suitable conversion function std string const char * exists". if put whole thing 1 string works, not when concatenate string , y.c_str(). have had no luck trying convert std::string const *char, not sure if helps.
exactly says, there's no version of system()
understands std::string
, std::string
can't freely converted const char *
(which system()
understand), because std::string
may go away in ways don't make sense in general case.
you can explicitly convert std::string
const char *
easily, though: std::string::c_str
, write last line as
system(a.c_str());
be aware returned const char *
's lifetime tied string
came from, once goes out of scope, pointer becomes invalid. case fine time use it, though, since system()
won't "hold on" pointer past own return.
Comments
Post a Comment