С++ открыть ссылку с ShellExecute

Если я напишу так:

    ShellExecute(NULL, "open", "www.google.com", NULL, NULL, SW_SHOWNORMAL);

Все в порядке и так и должно быть.

Но я хочу, чтобы пользователь мог ввести ссылку, куда он хочет перейти.

std::cout<<"Enter the link: ";
            char link;
            std::cin>>link;
        ShellExecute(NULL, "open", link, NULL, NULL, SW_SHOWNORMAL);

В этом случае я получаю ошибку invalid conversion from 'char' to 'const CHAR*.

Итак, есть ли способ сделать это правильно?


person RnD    schedule 23.06.2012    source источник


Ответы (2)


Ваш код получает только один символ в качестве ссылки. Вам нужно сделать ссылку типом, способным хранить значение ссылки, а также читать stdio. Создание ссылки как std::string сделает это, но тогда вам нужно позаботиться о том, как она передается в ShellExecute.

std::cout<<"Enter the link: ";
std::string link;
std::cin>>link;
ShellExecute(NULL, "open", link.c_str(), NULL, NULL, SW_SHOWNORMAL);
person mmmmmm    schedule 23.06.2012

Вы должны объявить свой ввод как char*

char *link = new char[2048];

...
delete[] link;

Const char* в ShellExecute — это просто обещание, что ввод не изменится. После изменения объявления все должно работать как положено.

person Mare Infinitus    schedule 23.06.2012
comment
Куда пишет cin - ссылка указывает на отсутствие памяти - вам нужно выделить немного памяти с помощью malloc для буфера, а также преобразовать char* в const char* - person mmmmmm; 23.06.2012