2014-02-21 3 views
0

Так что это мой кодКак использовать printf для строк?

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

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

почему?

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

благодарит

+2

Не следует смешивать 'зЬй :: cout' с' printf'. Оба буферизованы, но используют * разные * буферы, что может сделать ваш вывод неожиданным. –

+0

Смешивание С ++-стиль и ввод-вывод C-стиля прекрасно определены, если вы не вызывали 'ios :: sync_with_stdio (false)'. Однако это может быть плохой стиль. – Brian

ответ

3

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

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

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

Better код:

cout << name << endl; 
+0

спасибо! Я тестировал printf, это была всего лишь небольшая часть кода Я хочу сделать текст на основе rpg, и я чувствую, что printf займет меньше места без всех этих «<<», используемых в cout – Andrew

2

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

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

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

std::cout << name << std::endl; 
Смежные вопросы