2

我有一个包含 3 个不同命令行命令的字符串数组。我没有写出 3 个系统函数,而是尝试学习如何在 for 循环中将保存这些命令的字符串数组传递给系统函数(或类似的函数,即 exec())。我在试图弄清楚如何一次将这个字符串数组传递给系统函数时遇到了麻烦。目标是获得每个的退出状态,并在返回错误时打破 for 循环。

            std::string arrString[3] = {"something","another thing","a final thing"}
            int i;
            for(i=0; i<3; i++)
            {
                if (system(/*Something*/))
                ;//Do something...
            }     

编辑:这输出发生了错误,但它不应该。

                std::string arrString[4] = {"cmd","cmd","cmd"};
            int i;
            for(i=0; i<3; i++)
            {
                if (system(arrString[i].c_str())==0) {
                    OutputDebugStringW(L"It works!");
                }
                else
                {
                    OutputDebugStringW(L"It doesnt work :(");
                }
            }   
4

3 回答 3

3

system需要char*,因此您需要调用c_str数组的每个元素:

std::string arrString[3] = {"something","another thing","a final thing"}
int i;
for(i=0; i<3; i++) {
    if (system(arrString[i].c_str())) {
        //Do something...
    }
}
于 2012-06-08T16:00:58.513 回答
0
system(arrString[i])

然后检查退出代码并在适当的情况下中断循环。

于 2012-06-08T16:00:50.803 回答
0

您必须使用以下函数转换std:string为第一个:char*c_str()

system(arrString[i].c_str())

于 2012-06-08T16:01:26.000 回答