我是C / C ++的新人,
所以基本上我想调用一个显示2个数字的.exe文件,并能够抓住这两个数字在我的代码中使用它们。
要调用.exe文件,我已经使用了系统命令,但我仍然无法获取.exe文件显示的那两个数字
char *files = "MyPath\file.exe";
system (files);
答案 0 :(得分:2)
我认为这是更好的方法: 在这里,您只需创建新流程,并阅读流程为您提供的数据。我在OS X 10.11上使用.sh文件进行了测试,并且像魅力一样。我认为这可能也适用于Windows。
FILE *fp = popen("path to exe","r");
if (fp == NULL)
{
std::cout << "Popen is null" << std::endl;
}else
{
char buff[100];
while ( fgets( buff, sizeof(buff), fp ) != NULL )
{
std::cout << buff;
}
}
答案 1 :(得分:1)
您需要在C++
字符串文字中转义反斜杠,以便:
// note the double "\\"
char* files = "MyPath\\file.exe";
或者只使用正斜杠:
char* files = "MyPath/file.exe";
它效率不高但是std::system
可以将输出重定向到文件然后读取文件:
#include <cstdlib>
#include <fstream>
#include <iostream>
int main()
{
// redirect > the output to a file called output.txt
if(std::system("MyPath\\file.exe > output.txt") != 0)
{
std::cerr << "ERROR: calling system\n";
return 1; // error code
}
// open a file to the output data
std::ifstream ifs("output.txt");
if(!ifs.is_open())
{
std::cerr << "ERROR: opening output file\n";
return 1; // error code
}
int num1, num2;
if(!(ifs >> num1 >> num2))
{
std::cerr << "ERROR: reading numbers\n";
return 1; // error code
}
// do something with the numbers here
std::cout << "num1: " << num1 << '\n';
std::cout << "num2: " << num2 << '\n';
}
注意:(thnx @VermillionAzure)
请注意,由于独角兽,系统无处不在 环境。另外,shell可以彼此不同,例如cmd.exe 和bash。 - VermillionAzure
使用std::system
时,结果取决于平台,并非所有shell都具有重定向或使用相同的语法甚至存在!