C++ 合并字符串以'system'函数错误
C++ Combine strings for 'system' function error
我遇到了这个我无法真正理解的 c++ 错误(我是 c++ 的新手(。我认为代码应该有效,但它没有。所以我来寻求帮助。
法典:
#include <iostream>
#include <cstdlib>
using namespace std;
class Cpy{
public:
string exc;
void cpy(string pyfile){
exc = "python" + pyfile;
system(exc);
}
};
int main(){
Cpy ex;
ex.cpy("example.py");
}
std::system()
期望其字符串以指针的形式指向以 null 结尾的char
数组。您不能直接交给它std::string
。您可以使用c_str()
的std::string
方法来获取指向std::string
内容的 null 终止版本的指针:
system(exc.c_str());
此外,您很可能忘记在"python"
和您的论点之间留一个空格。
除此之外,exc
很可能是cpy()
方法中的局部变量,而不是类Cpy
的成员。
与其按值传递std::string
对象,不如考虑以std::string_view
(如果您的编译器支持 C++17(或普通const char*
的形式将pyfile
参数传递给cpy()
。此外,如果要构建更复杂的字符串,则可能需要考虑使用std::ostringstream
,而不仅仅是连接字符串对象:
void cpy(string_view pyfile)
{
ostringstream cmd;
cmd << "python " << pyfile;
system(exc.str().c_str());
}
对于只有两个字符串,这无关紧要。但是,如果您想连接更多的字符串,或者,例如,还将数字和其他需要格式化的内容合并到字符串中,使用字符串流通常似乎是一个更好的主意。
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误