Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用QString和'\';_C++_Qt - Fatal编程技术网

C++ 如何使用QString和'\';

C++ 如何使用QString和'\';,c++,qt,C++,Qt,我有一个使用getOpenFileName的程序,比如: QString fileName = QFileDialog::getOpenFileName(this, tr("Select video"), "d:\\", tr("Video files (*.avi)")); strcpy(thePath, fileName.toStdString().c_str()); // static char thePath[66]; scilab.setPath

我有一个使用getOpenFileName的程序,比如:

QString fileName = QFileDialog::getOpenFileName(this,
                    tr("Select video"), "d:\\", tr("Video files (*.avi)"));
strcpy(thePath, fileName.toStdString().c_str()); // static char thePath[66];
scilab.setPathloc(thePath);
scilab
是将作业发送到程序scilab的类的对象。其工作原理如下:

char std_dev[99];
char direc[60];
sprintf(direc,"direc=\'d:/BMDvideos/%s/%s/\'",getSessionName(),getVideoname());
sprintf(std_dev,"fn=\'d:/BMDvideos/%s/%s/%s.avi\'",
        getSessionName(),getVideoname(),getVideoname());
SendScilabJob(direc);
SendScilabJob(std_dev);
//SendScilabJob("fn=\'d:/BMDvideos/Aufnahme0.avi\'");
SendScilabJob("exec('U:/scilab/done/std_dev.sce');");
这很好,但是当我使用
QString
时,就像:

 char text1 [70]    ;
 sprintf(text1,"disp(fn=\'%s\');",getPathloc());
 SendScilabJob("exec('U:/scilab/done/std_dev.sce');");

什么都不管用,我想这是因为我必须在
sprintf
中使用
/
。你知道我该怎么解决这个问题吗?

@borisbn几乎肯定找到了问题所在<代码> SeaTFF是C函数,不是C++,它根本不是类型化的。它假定您知道要传递哪些类型。对于
%s
,这是
常量char*


简单的解决方案是:不要使用
sprintf
。您有一个适当的C++类, QStult。例如,
QString text=QString(“disp(fn=\'%1\');”).arg(getPathloc())
。请注意,您没有使用
%s
。因为它是C++,它是类型化的,编译器会计算出你是在传递一个整数还是一个字符串。

在字符串文字中,你不必逃避单引号字符<代码> <代码>。第二个例子中的Text 1发生了什么,70字符足够了吗?为什么不使用std::string或vector而不是char数组?SendScilabJob是如何工作的?这是您自己使用QProcess编写的代码吗?@Pete我已经想这样做了,但是ScilabJob只使用char[],是的,我的代码使用QProcess,但是为什么它在第一部分工作?`?您可以使用
std::string
std::string
中获得
const char*
。我肯定
QString
也有类似的功能。”但是当我使用类似这样的QString时:“-如果
getPathloc()
返回
QString
,那么它就不会工作。您应该将'getPathloc().toAscii().constData()'传递给sprintf