Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从文件夹中多次读取_C++_Visual C++ - Fatal编程技术网

C++ 从文件夹中多次读取

C++ 从文件夹中多次读取,c++,visual-c++,C++,Visual C++,我需要读取文件夹中的所有文件并写入缓冲区。除最后一部分(文件_0000.mdf、文件_0001.mdf、..file _9999.mdf)外,所有文件都具有相同的名称。如何读取所有文件?testFolder包含所有文件。如果我使用for_循环,它将从0开始,但我的test_文件从0000开始,依此类推。另外,我需要每个测试文件的文件大小。我的逻辑是错误的,但我不知道如何纠正它。第一种方法下面还提供了一些更新的代码 #include <iostream> #include <fs

我需要读取文件夹中的所有文件并写入缓冲区。除最后一部分(文件_0000.mdf、文件_0001.mdf、..file _9999.mdf)外,所有文件都具有相同的名称。如何读取所有文件?testFolder包含所有文件。如果我使用for_循环,它将从0开始,但我的test_文件从0000开始,依此类推。另外,我需要每个测试文件的文件大小。我的逻辑是错误的,但我不知道如何纠正它。第一种方法下面还提供了一些更新的代码

#include <iostream>
#include <fstream>
#include <string>
int main(){

std::string path="C:\\testFolder\\";
std::string constName="file_";
std::string lastName = ".mdf";
std::fstream InputStream;
std::string fileWithPath;

for (int i=0; i <9999;i++){

    fileWithPath=path+constName+std::to_string(static_cast<long long> 
    (i)+lastName;
     InputStream.open(fileWithPath,std::ios::binary);
     long InputFileSize= InputStream.tellg();
    }

  return 0;
  }
#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>

std::string SourceFolder="C:\\testFolder\\";
path mDirectory(SourceFolder);

std::cout<<"Directory includes the following files"
if(is_directory(mDirectory)){
for(auto testFile=mDirectory.begin();testFile!=mDirectory.end();testFile++){
    std::cout<< testFile->string()<<std::endline;   
}
#包括
#包括
#包括
int main(){
std::string path=“C:\\testFolder\\”;
std::string constName=“文件”;
std::string lastName=“.mdf”;
std::fstream输入流;
std::string fileWithPath;

对于(int i=0;i普通整数没有前导零。要获取前导零,您需要使用其他格式化文件名的方法。例如,使用和标准,如
std::setw
std::setfill

std::ostringstream oss;
oss << path << constName << std::setw(4) << std::setfill('0') << i << lastName;
fileWithPath = oss.str();
std::ostringstream oss;

oss您可以使用
FindFirstFile()
FindNextFile()
函数使用通配符扫描目录中的文件,即“C:\Data\file_???.mdf”。 返回的文件还将包含文件大小

请看完整的示例“”


一旦一个文件被列出,你可以像往常一样用
ifstream
读取它的内容。

你不关闭就调用
fstream::open
。这不起作用。关于格式化数字检查
std::stringstream
setfill
setw
。如果你能使用C++17,请看一下。请不要编辑问题在某种程度上,现有的答案是没有意义的。你可以打开另一个问题。