【发布时间】:2020-07-02 13:06:53
【问题描述】:
假设我在 Linux / Bash 中得到了类似的东西:
./my_program <input_file.in
我的代码中有没有办法检查我的输入文件的名称?
这样的?
if (strcmp(in,"desired_input_file_name.in")) {
printf("success!!"\n);
}
【问题讨论】:
-
您面临的具体问题是什么?如何读取这样的输入?或者如何正确使用
strcmp? -
如果您通过 bash 将文件内容流式传输到标准输入,我认为您无法做到这一点。但是,您可以将文件名作为参数传递给您的程序进行比较,如果需要内容,您必须自己打开文件。
-
您可以将文件名更改为程序的参数,而不是输入重定向(我认为这使您想要做的事情变得不可能)。这会是一个选择吗?
-
如果您接受来自
stdin的输入,就像来自 shell 的输入一样,您无法控制输入,它可能是文件,也可能不是文件(例如,@ 987654326@)。如果您必须知道输入文件,则需要它作为参数并且不要使用stdin。如果知道该文件允许某些优化或功能,您可以同时支持输入文件和stdin,并且仅当没有输入文件作为参数给出时才默认读取stdin(而不使用这些优化/功能)。
标签: c++ bash io-redirection