gpt4 book ai didi

c++ - 如何从管道传输到标准输入的文件获取输入

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

所以,我有一个程序,我在 C++ 上的树莓派上通过命令行运行。我已经知道如何传递命令行参数,但我需要使用 cin 传递它,但我无法让它工作。

通常我会使用 args,并在命令行上使用一种格式,例如 ./program filename,但我必须使用这种格式 ./program < filename通过 stdin 将文件名重定向到程序以进行此分配。我的导师告诉我使用 cin,但无论我做什么,它都不会打开文件。

int main(int argc, char *argv[])
{
cout << "Matching Brackets: NAME" << endl;
string line;
string fname;
cin >> fname;

ifstream myfile;
myfile.open(fname);

if (myfile.is_open())
{
while ( getline (myfile,line) )
{
int num = valid(line);
if(num >= 0)
cout << valid(line) << " ";
}
}

cout << endl;
myfile.close();
return 0;
}

我试图让 cin 获取文本文件的实际文件名,并在 fstream 中使用它来打开文件并通读它以执行操作,但我无法用该方法打开它,而且我还没有找到任何有关这样做的信息。

最佳答案

当您将程序用作

./program < filename

您只需要担心从 stdin/std::cin 读取内容。main 可以简化为:

int main(int argc, char *argv[])
{
cout << "Matching Brackets: NAME" << endl;
string line;

while ( getline (std::cin, line) )
{
int num = valid(line);
if(num >= 0)
cout << num << " "; // No need to call valid(line) again;
}

cout << endl;
return 0;
}

关于c++ - 如何从管道传输到标准输入的文件获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406680/

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