Я не знаю, что здесь произошло. Вот пример кода:Что-то плохое в понимании в «SetCurrentDirectory» («windows.h») в CPP
#include<stdio.h>
#include<iostream>
#include<string>
#include <Windows.h>
using namespace std;
int main()
{
char my_current_path[1024];
string current_path(R"(C:)");
if (!SetCurrentDirectory(current_path.c_str()))
cout << "cant change to that directory.";
GetCurrentDirectory(1024, my_current_path);
std::cout << my_current_path << endl;
system("pause");
return 1;
}
Что я здесь делаю, это попытка сменить каталог на некоторые каталоги.
С моим кодом есть две странные вещи.
(1 Странная вещь)
Когда я пытаюсь изменить на «C:» так:
#include<stdio.h>
#include<iostream>
#include<string>
#include <Windows.h>
using namespace std;
int main()
{
char my_current_path[1024];
string current_path(R"(C:)");
if (!SetCurrentDirectory(current_path.c_str()))
cout << "cant change to that directory.";
GetCurrentDirectory(1024, my_current_path);
std::cout << my_current_path << endl;
system("pause");
return 1;
}
Это не работает и не меняя пути (и его хорошую вещь.), но не покажет мне сообщение, которое отображается, когда каталог не изменен:
cout << "cant change to that directory.";
Почему это? (Когда я пытаюсь изменить что-то вроде «efef:» или «exist?», Это показывает мне, что это messege. Но почему здесь это не показывает меня, а также может изменить текущий рабочий каталог?
(Second Странная вещь)
Когда я изменить каталог на «G:» ИТС по некоторым причинам рабочий ..
#include<stdio.h>
#include<iostream>
#include<string>
#include <Windows.h>
using namespace std;
int main()
{
char my_current_path[1024];
string current_path(R"(G:)");
if (!SetCurrentDirectory(current_path.c_str()))
cout << "cant change to that directory.";
GetCurrentDirectory(1024, my_current_path);
std::cout << my_current_path << endl;
system("pause");
return 1;
}
Этот код компилируется, показывая, что я успешно изменил каталог на «G:». После перехода на этот путь я пытаюсь перейти на «C:» (что раньше, ничего не делал), и теперь это работа! но странным образом, его не движется к «C: \» Но:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE
И это странно, что до его не работала, а теперь, когда я нахожусь в «G:» путь и пытается перейти «c:» снова, затем его движение к пути, которого я даже не хотел!
'Если функция не работает, возвращаемое значение равно нулю. Чтобы получить расширенную информацию об ошибке, вызовите GetLastError.' Итак, добавьте некоторую проверку ошибок, чтобы вы знали, почему она терпит неудачу. –
why '" (C :) "' вы можете только '" C: \\ "' – Raindrop7
@RetiredNinja Не удалось изменить каталог, но не попал в if (есть if, если для случая он возвращает ноль –