【问题标题】:How to cut and paste files in c++如何在 C++ 中剪切和粘贴文件
【发布时间】:2014-01-19 16:54:20
【问题描述】:

我正在尝试使用重命名函数来更改 C++ 中的文件位置。我的问题是我想拥有输入和输出字符串并重命名它似乎只适用于字符。必须做什么??

编辑1:

 for(int i=0; i<dirs.size(); i++){
    if(directories.size()>1)
       for (int k=0; k<= directories.size()/2; k++){
         result = rename((filePath+dirs[i]+directories[k]).c_str(), ("test1/"+dirs[i]+directories[k]).c_str());
       } 
    }
  }

基本上我想将filePath/dir[i] dir的半个文件剪切并粘贴到newfilePath/dir[i] dir。 newFilePath 目录是空的,所以我还想创建相同的 dir[i] 文件夹并将文件剪切到新路径中。似乎重命名不会创建新文件夹。

编辑2:

我添加了 mkdir 函数以便在新目录中创建相同的 dir[i] 文件夹。但是,重命名功能不会移动新目录中的文件!

for(int i=0; i<dirs.size();i++){
        if(directories.size()>1){
          mkdir(dirs[i].c_str(), 0777);
            for (int k=0; k<= directories.size()/2; k++){
                 result= rename( (filePath+dirs[i]+directories[k]).c_str() , ("test1/"+dirs[i]+directories[k]).c_str()  );
             }
         }
 } 

【问题讨论】:

  • 在参数中使用std::stringstr()成员函数转换为const char*
  • @arne 应该是c_str()
  • 好吧,基本上我这里有一个逻辑错误。 “test1”文件夹是空的,我想在 test1 文件夹中创建相同的 dirs 文件夹和一半的目录文件(来自 filePath 文件夹)。似乎使用重命名功能我无法创建新文件夹。有什么想法吗?
  • @timrau 你是对的。
  • c_str() 工作正常,但我认为重命名最终不是我需要的!我想剪切和粘贴其他文件夹中的一些目录文件。

标签: c++ string rename


【解决方案1】:

使用std::stringc_str方法:

for (int k=0; k<= directories.size()/2; k++){
  result = rename((filePath+dirs[i]+directories[k]).c_str(), ("test1/"+dirs[i]+directories[k]).c_str());
}  

【讨论】:

    【解决方案2】:

    您应该使用c_str 函数将字符串作为 C 空终止数组访问:

    for( int k=0; k<= directories.size()/2; k++ ){
        std::string oldstr = filePath+dirs[i]+directories[k];
        std::string newstr = "test1/"+dirs[i]+directories[k]; 
        result = rename( oldstr.c_str() , newstr.c_str() );
    }
    

    data 函数,如果您使用的是 C++11。

    【讨论】:

      【解决方案3】:

      好吧,我忘了在文件路径和 dir[i] 之间的路径中添加“/”,重命名可以正常工作!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多