如何在QString中使用system
命令编写命令?
像:
QString command="chmod -R 777 /opt/QT/examples/code/TestGUI/Data";
system(command);
编译时,我收到此错误:
cannot convert ‘QString’ to ‘const char*’
for argument ‘1’ to ‘int system(const char*)’
有人可以提出建议吗?
答案 0 :(得分:12)
使用qPrintable()
宏
system(qPrintable(command));
答案 1 :(得分:7)
您需要从QString获取原始字符数组。这是一种方式:
system(command.toStdString().c_str());
答案 2 :(得分:7)
Ankur Gupta写道,使用QProcess静态函数(link to description):
int QProcess::execute ( const QString & program )
在你的情况下:
QProcess::execute ("chmod -R 777 /opt/QT/examples/code/TestGUI/Data");
答案 3 :(得分:6)
QProcess class http://doc.qt.io/qt-5/qprocess.html。这就是你需要的。
答案 4 :(得分:0)
要更改权限,您可以使用QFile的setPermissions
答案 5 :(得分:0)
您可以将QString
转换为const char*
。
如果你的字符串是UTF8,那么你可以使用:
const char* my_command = command.toUtf8().constData() ;
system(my_command);
如果你的字符串不是UTF8,那么你可以使用:
command.toLatin1().constData() ;
system(my_command);
在这种情况下,第二个就是你想要的。