尝试用 << 连接字符串
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());
但是有点难看。
我学了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());
但是有点难看。