Как отобразить переменные в C ++

0

Я недавно программировал на C, и я хочу знать, как я могу это сделать:

printf("Hello %s" &username);

в C++

cout << "Hello %s" &username;

не работает. Я все еще новенький, так что будьте спокойны.

Теги:

5 ответов

4
Лучший ответ

Это было бы:

cout << "Hello " << username;

Адрес не нужно передавать, поскольку вы пытаетесь напечатать указатель. Вы также можете связывать вызовы, выполняя cout << x1 << x2 что эквивалентно (cout << x1) << x2. Это работает, потому что результат первого вызова возвращает поток, так что вы снова используете функцию оператора.

Прикованные вызовы такие же, как:

cout << "Hello ";
cout << username;
  • 0
    Ах хорошо. Спасибо!
  • 0
    @ Яриз Нет проблем.
Показать ещё 3 комментария
2

Вы все еще можете использовать printf в C++, хотя вы должны сделать это правильно.

#include <stdio.h>

int main() {
    char username[] = "Slartibartfast";
    printf("User: %s\n", username);
    return 0;
}

Однако правильный "C++ способ" - это использовать iostream

#include <iostream>
#include <string>

int main() {
    std::string username = "Slartibartfast";
    std::cout << "User: " << username << '\n';
    return 0;
}

Потоки C++ работают в основном с операторами << (write to) и >> (read from), но у них также есть свои собственные функции-члены для выполнения более сложных задач, и есть некоторые вспомогательные функции для таких вещей, как чтение целой строки,

#include <iostream>
#include <string>

int main() {
    std::cout << "Enter a username:\n";
    std::string username;
    std::cin >> username;
    if (username.empty()) {
        std::cerr << "Empty username was input. Aborting\n";
        return 1;
    }
    std::cout << "Welcome, " << username << std::endl;
    std::cout << "Tell me what else you'd like this program to do?\n";
    std::string feedback;
    std::getline(cin, feedback);
    std::cout << "Thank you, you typed " << feedback.size() << " characters of input which I will now ignore.\n";
    return 0;
}

Некоторые объяснения:

std - это пространство имен, в которое помещаются большинство стандартных функций/подпрограмм C++. Это помогает избежать столкновений с определенными пользователем функциями/объектами/переменными.

:: означает "принадлежность", читается справа налево, std::cin означает cin belonging to std.

cin эквивалент stdin

cout эквивалент stdout

cerr эквивалентно stderr

endl - специальный объект, который записывает "\n" и заставляет сбросить выходной буфер.

std::getline позволяет читать из iostream в std::string

<< является сокращением для функции, называемой operator<< которая принимает iostream и вещь, и возвращает iostream, поэтому вы можете объединить ее:

std::cout << "Hello, " << 42 << " days since last " << adjective << " accident\n";
  • 0
    Спасибо, это очень мило.
0
cout << "Hello " << username << endl;
0
cout<<"Hello "<<username;
0

Из-за перегрузки функций вам не нужно указывать, как cout должен интерпретировать то, что вы передаете. В принципе, существует версия operator<< перегружена для большинства базовых типов (int, string, char и т.д.). Следовательно, вы можете просто написать

cout << "Hello " << username;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню