Итак, это мой код
string name;
cout <<"\n Enter Your name : \n";
cin >> name;
printf("%s" , name);
и для некоторых странных причин кодовые блоки сбрасываются при этом
Зачем?
также как я могу это исправить?
благодаря
Вы должны скомпилировать все предупреждения (например, g++ -Wall
). Вы получите полезное предупреждение. Вы хотите использовать c_str
как это
printf("%s", name.c_str());
Кстати, зачем использовать printf
и почему вы забыли \n
в конце строки формата printf
? (или использовать fflush
)
Лучший код:
cout << name << endl;
Если вам нужно передать вашу std::string
в функцию, которая принимает/использует строки C-стиля (const char *
) для ввода, используйте .c_str()
. Он возвращает const char *
.
Это то, что вы должны делать, когда вам нужно работать с существующими библиотеками, системными вызовами и т.д. Для вашего собственного кода обычно лучше найти более C++ способ сделать это.
В этом случае:
std::cout << name << std::endl;
std::cout
сprintf
. Оба буферизуются, но используют разные буферы, что может сделать ваш вывод неожиданным.ios::sync_with_stdio(false)
. Это может быть плохой стиль, хотя.