大家晚上好,请我使用virtual studio 2012在c ++中编写一个库管理应用程序。我已经使用Dev c ++编写了一些代码,但是当我切换到visual studio时它会出错。它涉及创建文件夹并检查文件夹是否实际创建。那是使用dir和mkdir。
答案 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;一个;只是为了保持输出屏幕,所以我可以看到结果