Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2018, 11:49   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию Создание папок и файлов.

Здравствуйте!
Пришла пора научиться создавать папки и файлы. Хотя файлы по учебнику я уже создавал. Но только в папке проекта. Нарыл в сети хороший рабочий пример:
Код:
#include <windows.h>
#include <fstream>
using namespace std;
 
int main()
{
    wchar_t szBuf[MAX_PATH]{ 0 };//создаётся массив типа char на 260 ячеек, но char не простой, а какой-то удлинённый (на сколько? зачем так а не иначе?)

    GetEnvironmentVariableW(L"USERPROFILE", szBuf, MAX_PATH);//Функция. Извлекает содержимое указанной переменной из блока среды вызывающего процесса.(L"USERPROFILE" переменная? какие бывают еще? что такое L? или этот тот самый блок среды?)

    wcscat_s (szBuf, L"\\Desktop\\Аукцион TeraOnline");//функция возвращает двубайтовую строку. (кому? там указано название которое получает папка)
    CreateDirectoryW(szBuf, NULL);.. функция создает каталог(т.е. папку)
    wcscat_s(szBuf, L"\\1.Первый.txt");//опять возвращение двубайтовой строки(название тектового файла надо полагать (а szBuf - это вероятно тот массив которому это двубайтовое название и назначается) Но что такое L!?)
    ofstream g(szBuf, ios::app);//это уже запись в текстовый файл
    g << "Первый - " << a << endl;//это уже запись в текстовый файл
    g.close();
}
Поискав в той же сети значения этих параметров и методов, понял, что основные пляски с бубном в этом коде заключениы вокруг длины имён папок и файлов.
Скажите пожалуйста кто знает. Где есть хороший универсальный источник по данной теме?
Где доступно и на русском излагаются последователньые примеры с возрастающим усложнением. Потому что механику вышеизложенного кода я не совсем понимаю. Не знаю альтернатив (в сети столько много всего непонятного!).

Прокомментил код как понял. Скажите пожалуйста, правильно или нет?
KAMLS вне форума Ответить с цитированием
Старый 23.09.2018, 11:56   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

std::filesystem есть в современном С++.

cat в strcat, wcscat и т.п. означает concatenation, причем тут байты.
В С++ часто удобнее std::string/wstring складывать через + и потом c_str() если нужна С-строка.

Ну и если вы не берете возвращаемое значение, то очевидно никому не возвращает (но тут и так первая строка изменяется).
А вот игнорировать возвращаемое значение в большинстве функций WinApi (CreateDirectory, ...) обычно не стоит потому что оно сообщает об ошибке.

L для wchar_t вместо char.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 23.09.2018 в 12:30.
Alex11223 вне форума Ответить с цитированием
Старый 23.09.2018, 12:57   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Понимаете в чем дело. Я хочу программно создавать папки с файлами внутри в любых папках (каталогах) на своём компьютере. Проверять какие есть папки на компьютере, и в соответствии с названием либо рандомно либо закономерно создавать папки и файлы там и удалять их потом реализуя их поиск. В общем хочу владеть умением в отношении папок и хотя бы текстовых файлов полностью.
Где взять такие знания?
Можно ли на этом форуме организовать что-то похожее на Википедию основных навыков в этом и похожих вопросах?
Чтобы каждый мог дополнять примеры по возрастающему усложнению.
Но главный вопрос, где взять знания для осуществления задачи по овладению умением создавать папки и файлы и работать с ними на совём компьютере?
KAMLS вне форума Ответить с цитированием
Старый 23.09.2018, 13:49   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

ууу... Это сильно секретные знания, которые никак не нагуглить по "c++ create dir", "c++ std::filesystem create dir", "winapi create dir" и т.п.


Цитата:
Сообщение от KAMLS Посмотреть сообщение
Можно ли на этом форуме организовать что-то похожее на Википедию основных навыков в этом и похожих вопросах?
Да хоть в википедии организовывайте, только вряд ли много кто кроме вас будет пополнять это.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.09.2018, 15:52   #5
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Здравствуйте!
Изучаю сайт за сайтом. Правильно ли я понял, что в самом С++ нет классов призванных создавать папки? (директории, каталоги и как их еще можно назвать)
KAMLS вне форума Ответить с цитированием
Старый 24.09.2018, 15:54   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Чукча не читатель? Выше ж вам сказали, что есть... https://en.cppreference.com/w/cpp/ex...eate_directory
p51x вне форума Ответить с цитированием
Старый 24.09.2018, 16:23   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Я не очень хорошо понял про "чукча", сайт по вашей ссылке я уже видел. Это экспериментальный стд. До него ничего в С++ не было? Вот это интересует.
KAMLS вне форума Ответить с цитированием
Старый 24.09.2018, 16:25   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Я ж в самом первом сообщении сказал: в новых стандартах есть std::filesystem (С++17, в VS с 2015 есть в неймспейсах типа tr::, experimental:: ).
Ну или API ОС (WinApi на винде) или библиотеки типа boost, Qt.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 24.09.2018, 16:30   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

До него был буст и другие либы, а так же API ОС. Нате не эксперементальный вариант https://en.cppreference.com/w/cpp/fi...eate_directory .
p51x вне форума Ответить с цитированием
Старый 24.09.2018, 16:36   #10
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 598
По умолчанию

Зазобрался чуток, спасибо.
Вот это создаёт папку на диске С.
Код:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <experimental/filesystem>
#include<conio.h>
namespace fs = std::experimental::filesystem;

int main()
{
	fs::create_directories("C://ddd");
	//fs::create_directory("sandbox/1/2/b");
	//fs::permissions("sandbox/1/2/b", fs::perms::remove_perms | fs::perms::others_all);
	//fs::create_directory("sandbox/1/2/c", "sandbox/1/2/b");
	//std::system("ls -l sandbox/1/2");
	//fs::remove_all("sandbox");
	_getch();
	return 0;
}
Значете, я привык разом объявлять "using namespace std;" и дальше писать на основе стандарта. Пока на нуждаюсь в разных пространствах, не дорос. (Ну, не по возрасту, по знаниям))) Так вот, это экспериментальное пространство поддерживает простые стандарты? По идее должно в духе наследования, но лучше узнать у знающих.
KAMLS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список файлов и папок в каталоге Evgenuych96 Паскаль, Turbo Pascal, PascalABC.NET 7 27.10.2012 14:07
Корректный сёрчинг файлов и папок Altera Общие вопросы Delphi 7 20.02.2011 19:37
копирование файлов и папок Smagulov85 Общие вопросы Delphi 0 19.10.2010 23:16
поиск файлов и папок FAiver Общие вопросы Delphi 13 09.04.2009 18:01
Отображение скрытых файлов и папок и отображение розширения всех файлов beegl Общие вопросы Delphi 10 14.12.2008 22:02