gpt4 book ai didi

c++ - 使程序与输入和文件一起工作

转载 作者:行者123 更新时间:2023-11-28 06:16:04 27 4
gpt4 key购买 nike

我正在制作一个仅适用于键盘输入的 shell 解释器,但我必须使其适用于文本文件。

int main(int argc, char *argv[], char *envp[]) {
string comando;
mi_argv[0] = NULL;
int pid_aux;
el_prompt = "$> ";

if(argv[1] != NULL)
{
ifstream input(argv[1]);
if (!input)
{
cerr << "No se reconoce el archivo " << argv[1] << endl;
exit(EXIT_FAILURE);
}
}

while(!cin.eof())
{
cout << el_prompt;
getline(cin, comando);
...
}
}

关键是要使它与像参数 ./shell file.txt 这样的文件一起工作。我试图将文件重定向到 cin,但我不知道该怎么做。

最佳答案

将从输入流读取的代码放在一个单独的函数中,并将对输入流的引用传递给该函数。然后您可以将任何输入流传递给该函数,您打开的文件或 std::cin

例如

void main_loop(std::istream& input)
{
// Use `input` here like any other input stream
}

现在您可以使用标准输入调用该函数

main_loop(std::cin);

或者你的文件

main_loop(input);

此外,请注意该循环条件,执行 while (!stream.eof()) 在大多数情况下不会按预期工作。原因是 eofbit 标志直到您尝试从流末尾读取数据后才设置,这将导致循环额外运行一次。

而是做例如while (std::getline(...)).

关于c++ - 使程序与输入和文件一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285482/

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