gpt4 book ai didi

c++ - 如何让我完成的程序通过终端输入读取文件?

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:43 24 4
gpt4 key购买 nike

这很愚蠢,但我已经完成了一个接受文件使用的程序。但问题是我不知道如何在终端中指向它?我在 macbook pro 上,现在运行我输入的 C++ 程序

"g++ FillMe.cpp -o main; ./main"

但现在如何让我的 FillMe 程序真正读取文件?如何在终端命令中指向它?谢谢。

有效的代码如下:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

class Text {



string text;

public:

Text() {}

Text(const string& fname) {

ifstream ifs(fname.c_str());

string line;

while (getline(ifs, line))

text += line + '\n';

}

string contents() {

return text;

}

};

int main(int argc, char* argv[]) {

if (argc > 1)

{

Text t1;

Text t2(argv[1]);

cout << "t1 :\n" << t1.contents() << endl;

cout << "t2 :\n" << t2.contents() << endl;

}

}

最佳答案

 $ g++ FillMe.cpp -o main 
$ ./main

How can I point to it in the terminal command?

您可以采取多种选择。

对于您的实际设置,您希望从程序命令行参数中查看文件名。因此,对于多个文件参数,您需要在循环中访问它们

    if (argc > 1) {
for(int i = 1; i < argc; ++i) {
Text txt(argv[i]);
cout << "txt:\n" << txt.contents() << endl;
}

并从命令行调用

$ ./main file1.txt file2.txt file3.txt

恕我直言,更好更灵活的解决方案是让您的程序默认从标准输入读取。因此,您可以简单地使用 shell 的输入重定向功能,例如一个 pipe

$ cat file1.txt file2.txt file2.txt | ./main

提供 ./mainstd::cin 输入流。

或者

$ ./main < myinputfile.txt

或许多其他选项之一,如 documented here .

但后者取决于您的用例。如果您需要处理来自已知单独文件的输入,最好使用 argv 将名称作为程序参数传递。

关于c++ - 如何让我完成的程序通过终端输入读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24482268/

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