打开顺序文件C ++

时间:2013-07-05 14:14:58

标签: c++ file

我有一个文件夹,文件格式为FileName000.extension FileName001.extension等。 我需要打开它们并用C ++做一些事情。 我试过的是这个:

for(int i=0; i<number_of_files; i++){
        char filename[64];
if(i<10){
        sprintf(filename, "/Path/To/File/FileName00%i.extension", i);
}
    if(i<100){
        sprintf(filename, "/Path/To/File/FileName0%i.extension", i);
}
else{
        sprintf(filename, "/Path/To/File/FileName%i.extension", i);
}
        ifstream infile ( filename );

//DO STUFF TO FILES HERE INSIDE THE FOR LOOP
}

这似乎不起作用,因为ifs由于某种原因 任何帮助,将不胜感激。如果它是一个char或一个字符串,它的工作原理并不重要。我正在使用Xcode作为IDE,但该程序也必须在Windows上运行。

2 个答案:

答案 0 :(得分:2)

您可以使用sprintf(... "...%03d...", ...)获得一致的3位数字。

答案 1 :(得分:2)

如果您阅读了好文reference,您会发现根本不需要选择性部分:

snprintf(filename, sizeof(filename), "/Path/To/File/FileName%03d.extension", i);

格式代码中的3告诉snprintf使用三个字符作为字段宽度,前导0告诉它使用前导零来表示小于99的值。


至于您在if语句中遇到的问题,您错过了else

if (i < 10) { ... }
else if (i < 100) { ... }
else { ... }

如果您需要C ++解决方案,则可以使用std::ostringstream

std::ostringstream os;
os << "/Path/To/File/FileName" << std::setfill('0') << std::setw(3) << i << ".extension";

ifstream file(os.str());