尝试用 << 连接字符串

Trying to concatenate strings with <<

我学了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 只包含一个 \,但我认为这不是问题所在。

您尝试使用的 operator<< 与 C++ 流相关联。您当前未使用流,因此您应该使用 operator+ of std::string:

连接字符串
auto str = std::string("copy ") + currPath + " c:\" + dest + "\hej.exe\n";
system(str.c_str());

或者,使用 C++14 literals:

auto str = "copy "s + currPath + " c:\" + dest + "\hej.exe\n";

如果要用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());

但是有点难看。