相关疑难解决方法(0)

当两个不同参数中有空格时,C++ system()无法正常工作

我正在尝试使用system()运行需要一些参数的.exe.

如果.exe的路径中存在空格并且在参数中传递的文件的路径中,我会收到以下错误:

The filename, directory name, or volume label syntax is incorrect.
Run Code Online (Sandbox Code Playgroud)

以下是生成该错误的代码:

#include <stdlib.h>
#include <conio.h>

int main (){
    system("\"C:\\Users\\Adam\\Desktop\\pdftotext\" -layout \"C:\\Users\\Adam\\Desktop\\week 4.pdf\"");
    _getch();
}
Run Code Online (Sandbox Code Playgroud)

如果"pdftotext"的路径不使用引号(我需要它们,因为有时目录会有空格),一切正常.另外,如果我将"system()"中的内容放在字符串中并输出它并将其复制到实际的命令窗口中,它就可以工作.

我想也许我可以用这样的东西链接一些命令:

cd C:\Users\Adam\Desktop;
pdftotext -layout "week 4.pdf"
Run Code Online (Sandbox Code Playgroud)

所以我已经在正确的目录中,但我不知道如何在同一个system()函数中使用多个命令.

任何人都可以告诉我为什么我的命令不起作用或者我想到的第二种方式是否有效?

编辑:看起来我需要一组额外的引号,因为system()将其参数传递给cmd/k,所以它需要在引号中.我在这里找到了:

C++:如何使我的程序打开带有可选args的.exe

因此,即使我们没有得到相同的错误消息,我也会投票关闭,因为问题非常接近,谢谢!

c++ windows system

13
推荐指数
2
解决办法
2万
查看次数

如何使用Qt运行Windows cmd命令?

我必须使用Qt运行以下命令,它将弹出Git GUI窗口.

D:\MyWork\Temp\source>git gui
Run Code Online (Sandbox Code Playgroud)

我怎么做?

我尝试了以下,但它不起作用:

QProcess process;   
process.start("git gui",QStringList() << "D:\MyWork\Temp\source>");
Run Code Online (Sandbox Code Playgroud)

c++ qt qprocess

7
推荐指数
1
解决办法
8768
查看次数

如何从Windows中的C++程序执行另一个exe

我希望我的C++程序在Windows中执行另一个.exe.我该怎么做?我正在使用Visual C++ 2010.

这是我的代码

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    unsigned int input;
    cout << "Enter 1 to execute program." << endl;
    cin >> input;
    if(input == 1) /*execute program here*/;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ windows

5
推荐指数
4
解决办法
5万
查看次数

标签 统计

c++ ×3

windows ×2

qprocess ×1

qt ×1

system ×1