Форум программистов, компьютерный форум CyberForum.ru

Создание вложенной папки (Directory) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разложение числа на слагаемые http://www.cyberforum.ru/cpp-beginners/thread342773.html
Разложение числа на слагаемые - используется во многих задачах (как мне кажется - это тривиальная задача). И мне стало интересно: какой самый быстрый алгоритм разложения числа на слагаемые вы предложите? Думаю, максимальный тест n<=50. З.Ы. Проверю на время сам. И разложения должны быть без повторений (перестановка слагаемых не дает новых разложений) и чтоб строка слагаемых выводилась в файл...
C++ Расчет краски на лабиринт Условие задачи тут #include <iostream> using namespace std; void paint(int i, int j) { if (a=='.') { a='$'; paint(i+1,j); paint(i-1,j); paint(i,j+1); http://www.cyberforum.ru/cpp-beginners/thread342764.html
C++ Создание нескольких стеков
//--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <stdlib.h> #include <iostream.h> #include <dos.h> //--------------------------------------------------------------------------- namespace Stack
C++ Сохранение матриц больших размеров в типизированный файл
Проблема: есть большой двумерный массив (double). Пытаюсь сохранить его в типизированный файл (а затем считать в другой массив). В файл сохраняется только некоторая часть (до 58 элемента, в частном случае), на оставшиеся места записываются максимальное и минимальное значения double (+-6.2 * 10^66). Причем иногда прерывается посередине строки. Как будто память под строку выделилась не в одном...
C++ два ++ http://www.cyberforum.ru/cpp-beginners/thread342651.html
Что означает "++" что ето за операция в С++Builder очень надо узнать Напишите кто нибудь.
C++ Тетрис и многопоточность Здравствуйте. Взялся я за тетрис, немного написал, а потом понял, что мне нужны два потока. Вот зачем: у меня игровое поле — двумерный массив . Фигура представленна массивом . В то время, как один поток будет опускать фигуры вниз, второй поток должен крутить эту же фигуру независимо от шажков спуска. Как это реализовать? Я честно гуглил, но конкретных примеров многопоточности в C++ не... подробнее

Показать сообщение отдельно
silentnuke
Android Programmer
137 / 138 / 5
Регистрация: 08.12.2010
Сообщений: 421
17.08.2011, 14:57     Создание вложенной папки (Directory)
Я б конечно использовал средства boost, там куда удобнее, и код получится портируемым. на форуме даже выкладывал свою версию, т.к. в стандартной поставке функция оказалась нерабочей.

но раз нужно на winapi, предлагаю такой вариант.
осторожно страшный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <windows.h>
using namespace std;
 
BOOL RecursiveCreateDirectory(const char *szDirPath, LPSECURITY_ATTRIBUTES lpSA)
{
    const char szSlash[] = "\\";
    BOOL bRet = TRUE;
 
    if(!strstr(szDirPath, szSlash))
    {
        return CreateDirectoryA(szDirPath, lpSA);
    }
    char* szDblDirPath  = new char[strlen(szDirPath)+1];
    strcpy(szDblDirPath,szDirPath);
    char* pszDblDirPath = szDblDirPath;
 
    while(pszDblDirPath!=NULL && bRet==TRUE)
    {
        pszDblDirPath = strstr(pszDblDirPath, szSlash);
        if(pszDblDirPath!=NULL)
        {
            if(*(pszDblDirPath - 1) == ':' && strstr(pszDblDirPath + 1, szSlash ) == 0)
            {
                bRet = CreateDirectoryA(pszDblDirPath, lpSA);
                break;
            }
            if(*(pszDblDirPath - 1) == ':')
            {
                pszDblDirPath = strstr(pszDblDirPath + 1, szSlash);
            }
            *pszDblDirPath = 0;
            if(!::CreateDirectoryA(szDblDirPath, lpSA))
            {
                if(::GetLastError()!=ERROR_ALREADY_EXISTS)
                {
                    bRet = FALSE;
                    break;
                }
            }
            if(pszDblDirPath)
            {
                *pszDblDirPath = szSlash[0];
                ++pszDblDirPath;
            }
        }
    }
    delete szDblDirPath;
    return bRet;
}
 
int main()
{
    char str[] = "C:\\test\\01\\01";
    if(!RecursiveCreateDirectory( str, NULL ))
        cout<<"failed\n";
    else 
        cout<<"OK\n";
    return 0;
}
 
Текущее время: 10:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru