C++ отворена връзка с 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