2012-11-19 23 views
3

是否ifstream的支持是这样的:ifstream的通配符

ifstream myfile; 
myfile.open("/home/Desktop/*.txt*"); 

我试图做类似的操作,我得到水湿打开文件。如果我做vim /home/Desktop/*.txt,我打开唯一名为help.txt1的文件,但出于某种原因无法使用ifstream打开它。

+2

不,它没有。 – Cornstalks

+0

如果确实如此(它没有),如果有多个匹配项,它应该打开哪个文件? –

+0

否;有没有这样的名称文件.... –

回答

3

简短答案是“否”。长的答案是“不,它不”。

P.S.查看glob函数以获取文件列表并逐一处理它们。

+0

<3 <3 <3 <3 <3 <3 –

+0

posix上不是'glob'吗? – evanmcdonnal

+0

@evanmcdonnal,是的,我不保证它在任何地方都可用。 –

0

匹配文件名通配符的功能称为"globbing"。您需要使用glob(3)来获取文件列表,然后依次打开每个文件。

0

这是因为shell会解释您输入的命令vim /home/Desktop/*.txt。它会查找与该模式匹配的文件,并将其列表传递给vim可执行文件的命令参数。

要在Unix上用C++做类似的事情,请查看glob函数。

0

ifstream不支持通配符。您必须使用DIR或类似的东西来获取所有文件,然后将所有包含.txt的文件放在列表或数组中,然后遍历它,每个文件都调用fopen