是否ifstream的支持是这样的:ifstream的通配符
ifstream myfile;
myfile.open("/home/Desktop/*.txt*");
我试图做类似的操作,我得到水湿打开文件。如果我做vim /home/Desktop/*.txt
,我打开唯一名为help.txt1的文件,但出于某种原因无法使用ifstream打开它。
是否ifstream的支持是这样的:ifstream的通配符
ifstream myfile;
myfile.open("/home/Desktop/*.txt*");
我试图做类似的操作,我得到水湿打开文件。如果我做vim /home/Desktop/*.txt
,我打开唯一名为help.txt1的文件,但出于某种原因无法使用ifstream打开它。
简短答案是“否”。长的答案是“不,它不”。
P.S.查看glob
函数以获取文件列表并逐一处理它们。
匹配文件名通配符的功能称为"globbing"。您需要使用glob(3)
来获取文件列表,然后依次打开每个文件。
这是因为shell会解释您输入的命令vim /home/Desktop/*.txt
。它会查找与该模式匹配的文件,并将其列表传递给vim
可执行文件的命令参数。
要在Unix上用C++做类似的事情,请查看glob
函数。
ifstream
不支持通配符。您必须使用DIR
或类似的东西来获取所有文件,然后将所有包含.txt的文件放在列表或数组中,然后遍历它,每个文件都调用fopen
。
不,它没有。 – Cornstalks
如果确实如此(它没有),如果有多个匹配项,它应该打开哪个文件? –
否;有没有这样的名称文件.... –