вывод строки printf "Dz↕" getch () C ++ - PullRequest
1 голос
/ 16 июня 2011

Я хочу, чтобы на выходе было указано, какую клавишу со стрелкой нажал пользователь.Вывод, который я получаю:

"You pressed the Dz↕ button."

То, что я написал, было:

unsigned int key;
string K;
do
{
    key = getch();
    if (key==72)
        K=" up";
    else if(key==80)
        K="down";
    else if (key==77)
        K="right";
    else if (key==75)
        K="left";
    else
        {}
    if (key!=224)
        printf("You pressed the %s button.\n", K);
    else
        {}
}while(key !='q');

return;

Ответы [ 4 ]

6 голосов
/ 16 июня 2011

должен сделать std::cout << "You have pressed " << K << " button." << std::endl; Вы смешали string тип объекта с printf. printf принимает только char * или char [] со строкой формата %s.

Или вы можете захотеть получить доступ к строке c, связанной с объектом string, с помощью K.c_str ()

printf ("\ntest %s", K.c_str ());

4 голосов
/ 16 июня 2011

printf не является типобезопасным, если вы передадите ему несоответствующий ввод, он может неправильно работать.Попробуйте

printf("You pressed the %s button.\n", K.c_str()); 

Еще лучше, в C ++ используйте operator<<, как отмечено в другом ответе.

0 голосов
/ 16 июня 2011

printf нужен символ *, а не std :: string, попытайтесь с

printf("You pressed the %s button.\n", K.c_str());
0 голосов
/ 16 июня 2011

Вы печатаете K, но в случае, если не была нажата одна из стрелок, вы не инициализируете K. Назначьте клавишу K = перед операторами if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...