Добавление заявления в фигурные скобки изменить функциональность кода?

голоса
0

Я довольно новыми для C ++, я пытаюсь скопировать код из ссылки C ++, который превращает пробелы в строке в тире. Вот код

void sp_to_dash(const char *str){
    while(*str){
        if(*str==' ')
            cout<<(%c, '-');

        else
            cout<<(%c, *str);
            str++;

    }
}

int main(){
    sp_to_dash(hello world how are you);
    int j;
    cin>>j;
    return 0;
}

Теперь это работает отлично, выход я получаю ВЫХОД: hello-world-how-are-you

Однако , когда я прилагаю код в sp_to_dashфункции в фигурных скобках , как это

void sp_to_dash(const char *str) {
    while (*str) {
        if (*str==' ') {
            cout << (%c, '-');
        } else {
            cout << (%c, *str);
            str++;
        }
    }
}

Выход я получаю бесконечный цикл черточек, я не понимаю, почему это так, может кто-нибудь объяснить мне, почему добавление кода в фигурных скобках, как это вызывает бесконечный цикл?

Задан 02/09/2018 в 05:42
источник пользователем
На других языках...                            


1 ответов

голоса
0

Отступ в заблуждение. Там может быть только один оператор, если под или еще филиала. Для того, чтобы поместить несколько, она должна быть составной оператор (INT фигурные скобки). Так что это

    else
        cout<<("%c", *str);
        str++;

... эквивалентно этому

    else
        cout<<("%c", *str);
    str++;
Ответил 02/09/2018 d 05:46
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more