我已经学习了半年的java编程,但现在我也在努力学习c ++。
我正在使用minGW和代码块。我的问题是我正在尝试将文件从一个路径复制到另一个路径。这很好用:
system("copy c:\\test.txt c:\\test2.txt");
但是当我尝试这个时它不起作用(currPath和dest是字符串)
system("copy " << currPath << " " << "c:\\" << dest << "\\hej.exe" << end1);
我收到了错误:
error: no match for 'operator<<' in '"copy " << currPath'
字符串currpath和dest只包含一个\,但我不认为这是问题。
答案 0 :(得分:4)
您尝试使用的operator<<
与C ++流相关联。您当前没有使用流,因此您应该使用operator+
的{{1}}连接字符串:
std::string
或使用C++14 literals:
auto str = std::string("copy ") + currPath + " c:\\" + dest + "\\hej.exe\n";
system(str.c_str());
答案 1 :(得分:2)
如果您想使用operator<<
将字符串放在一起,则需要使用std::ostringstream
:
std::ostringstream strm;
strm << "copy " << currPath << " " << "c:\\" << dest << "\\hej.exe";
system(strm.str().c_str());
这可以包装,因为它不需要比这一行更长的时间:
system((std::ostringstream{} << "copy " << currPath << " "
<< "c:\\" << dest << "\\hej.exe").str().c_str());
但是眼睛有点难过。