使用vitual studio 2012编写c ++目录

时间:2016-12-28 16:08:09

标签: c++ visual-studio visual-studio-2012

大家晚上好,请我使用virtual studio 2012在c ++中编写一个库管理应用程序。我已经使用Dev c ++编写了一些代码,但是当我切换到visual studio时它会出错。它涉及创建文件夹并检查文件夹是否实际创建。那是使用dir和mkdir。

3 个答案:

答案 0 :(得分:2)

Windows和Linux(POSIX)不支持大多数文件系统功能使用相同的API。您可以使用Microsoft的特定于平台的API,例如CreateDirectory(),也可以使用类似POSIX的版本,例如_mkdir()

如果你有一个更新的C ++编译器/标准库,你可以使用预定成为标准C ++一部分的experimental filesystem library,可能早在C ++ 17中。如果没有,您可以使用Boost.Filesystem从中绘制标准前实验库。

这是一个使用Boost.Filesystem的完整的最小示例,它可以在Windows和Linux上运行而无需修改:

#include <iostream>
#include <boost/filesystem.hpp>

namespace fs = boost::filesystem;

int main()
{
    if( !fs::exists( "my_dir" ) )
    {
        if( fs::create_directory( "my_dir" ) )
        {
            std::cout << "Directory created!\n";
        }
    }
}

看到它运行: Coliru

以下是使用std::experimental::filesystem的相同代码: Coliru

您需要在构建系统中设置适当的包含和链接器路径,以使其中任何一个在本地工作。使用文件系统的最大“问题”是它默认会抛出很多错误的异常。您可以在适当的位置设置try / catch块,也可以传入错误代码参数,使其返回状态。

答案 1 :(得分:0)

#include <stdio.h>
#include <windows.h>

int main() {
    if (!CreateDirectoryA("C:\\ABC123", NULL))
    {
        if (GetLastError() == ERROR_ALREADY_EXISTS)
        {
            printf("Already Exists");
        }else if (GetLastError()== ERROR_PATH_NOT_FOUND)
        {
            printf("Path not found");
        }
    }else{
        printf("Created..");
    }
}

简单的功能就可以了。

答案 2 :(得分:0)

非常感谢,但我发现这解决了我的问题

#include <iostream>
#include <direct.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

void main( void )
{
   if( _mkdir( "\\testtmp" ) == 0 )
   {
      printf( "Directory '\\testtmp' was successfully created\n" );
      system( "dir \\testtmp" );
      if( _rmdir( "\\testtmp" ) == 0 )
        printf( "Directory '\\testtmp' was successfully removed\n"  );
      else
         printf( "Problem removing directory '\\testtmp'\n" );
   }
   else
      printf( "Problem creating directory '\\testtmp'\n" );
   int a;
   cin >> a;
}

cin&gt;&gt;一个;只是为了保持输出屏幕,所以我可以看到结果