Problem ze ścieżkami do tworzenia folderów

0

Witajcie, mam problem.
Potrzebuję, aby folder tworzył się na pulpicie użytkownika, tylko nie wiem jak zawrzeć zmienną z jego nazwą w ścieżce
Próbowałem to zrobić "na chłopski rozum" ale nie pykło

char name[15];
	DWORD dwname = sizeof(name);
	GetUserName(name, &dwname);e);


CreateDirectory(TEXT("C:\\Users\\"name"\\Desktop\\Muzyka"), NULL);
0

Musisz używać WinAPI, zamiast jakichś wygodniejszych bibliotek? Np. boost::filesystem albo Qt?

Poza tym, ​że tak się stringów nie konkatenuje w C ani w C++, to jeszcze mieszasz prawdopodobnie wide stringi z char*.

using tstring = std::basic_string<TCHAR>;
using tstringstream = std::basic_stringstream<TCHAR>;
tstringstream dir_stream;
dir_stream << TEXT("C:\\Users\\") << name << TEXT("\\Desktop\\Muzyka");
auto dir = dir_stream.str();

CreateDirectory(dir.c_str(), NULL);

Swoją drogą, masz zmienną środowiskową USERPROFILE, może chcesz jej użyć?

3

Skoro już bezpośrednio korzystać z Windows API, to do dyspozycji jest funkcja SHGetKnownFolderPath. Więcej informacji znajdziesz w dokumentacji – Known Folders. Jeśli potrzebujesz kompatybilności ze starszymi systemami niż Vista (na przykład z XP) to możesz skorzystać z funkcji SHGetSpecialFolderPath.

4

Nie należy hardkodować tego typu ścieżek, bo wcale nie musi być C:, wcale nie musi być Users, katalog użytkownika wcale nie musi pokrywać się z nazwą użytkownika, ani wcale nie musi być tam Desktop.
Strukturę katalogów Microsoft już w przeszłości zmieniał. Więcej niż raz. Ścieżkę trzeba pobrać z systemu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1