尝试使用<<连接字符串

时间:2015-01-29 17:03:28

标签: c++ string stdstring

我已经学习了半年的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只包含一个\,但我不认为这是问题。

2 个答案:

答案 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());

但是眼睛有点难过。