gpt4 book ai didi

c++ - 如何进入和读取控制台程序?

转载 作者:可可西里 更新时间:2023-11-01 09:52:36 31 4
gpt4 key购买 nike

对于我想编写的程序,我必须向控制台程序输入命令并从中读取命令,但我不知道该怎么做。

为了便于理解,以下示例的解决方案可能会有所帮助:

我想编写一个程序,将所有自然数平方到 100,并将结果保存到文本文件中。假设我不知道如何计算平方数,因此使用具有以下(不可用)源代码的可执行文件 square_x.exe:

#include <iostream>
using namespace std;

int main(){

double in;

cout << "Input: ";
while(cin>>in){
cout << in << static_cast<char>(253)/*²*/ << " = " << in*in << endl
<< endl
<< "Input: ";
}

return 0;
}

那么我必须如何添加到以下代码片段? (建议,在“不知何故”指示的地方):

#include <fstream>
using namespace std;

ofstream file;

void writeToFile( const char* name, const char* content ){
file.open( name, ios::app );
file << content;
file.close();
}

int main(){

char buffer[30], buffer2[50];

//Somehow call square_x.exe

for( int i = 1 ; i <= 100 ; i++ ){

//Somehow send i to square_x.exe

//Somehow get a result from square_x.exe and safe it to buffer2

//Extract from the got string the result of the calculation
strtok(buffer2," "); strtok(0, " ");
strncpy(buffer2,strtok(0, " \n"),sizeof(buffer2)-1);

sprintf( buffer , "%d\n%s\n\n" , i , buffer2 );

writeToFile( "list.txt", buffer );
}

//Somehow close square_x.exe

return 0;
}

我问我的一个 friend 他能不能帮我,他给我发了this .但是由于我不知道我必须如何更改此代码才能满足我的需求,所以他将我送到了这里。

最佳答案

我假设您真正想要的是将输入传递给辅助程序并获得其输出的方式。

引用的链接解释了如何使用 WinAPI 函数执行此操作。不幸的是,由于缺少 fork 函数 (*),Windows 上没有更简单的解决方案。

将链接作为引用,您必须在源代码中替换 //somehow call square_x.exe 管道和子进程创建(CreatePipeCreateProcess API调用,这里的子进程是square_x.exe)。然后发送一些东西给 child ,你只需要在输入管道的写端使用输出管道。

但是你的例子会有点难,因为你的 child 添加了你必须忽略的嘈杂字符串 "Input: "

尝试将其放入您的代码中,如果遇到困难,请返回此处提出另一个问题(使用新代码)。

(*) 但是您可以找到一个库来为您处理所有这些血淋淋的细节,例如 libexecstream由@a486408 提出。

关于c++ - 如何进入和读取控制台程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782402/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com