Как использовать printf для строк? [Дубликат]

0

Итак, это мой код

string name;
cout <<"\n   Enter Your name : \n";
cin >> name;
printf("%s" , name);

и для некоторых странных причин кодовые блоки сбрасываются при этом

Зачем?

также как я могу это исправить?

благодаря

  • 2
    Не смешивайте std::cout с printf . Оба буферизуются, но используют разные буферы, что может сделать ваш вывод неожиданным.
  • 0
    Смешение стилей ввода-вывода в стиле C ++ и в стиле C совершенно точно, если вы не вызывали ios::sync_with_stdio(false) . Это может быть плохой стиль, хотя.
Теги:

2 ответа

3

Вы должны скомпилировать все предупреждения (например, g++ -Wall). Вы получите полезное предупреждение. Вы хотите использовать c_str как это

printf("%s", name.c_str());

Кстати, зачем использовать printf и почему вы забыли \n в конце строки формата printf? (или использовать fflush)

Лучший код:

cout << name << endl;
  • 0
    благодарю вас ! Я тестировал printf, это была лишь небольшая часть кода, я хочу сделать текстовый рпг и чувствую, что printf займет меньше места без всех тех «<<», которые используются в cout
2

Если вам нужно передать вашу std::string в функцию, которая принимает/использует строки C-стиля (const char *) для ввода, используйте .c_str(). Он возвращает const char *.

Это то, что вы должны делать, когда вам нужно работать с существующими библиотеками, системными вызовами и т.д. Для вашего собственного кода обычно лучше найти более C++ способ сделать это.

В этом случае:

std::cout << name << std::endl;

Ещё вопросы

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