如何将printf用于字符串?

时间:2014-02-21 20:08:43

标签: c++

所以这是我的代码

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

并且出于一些奇怪的原因,代码块在此处崩溃了

为什么?

我怎么能解决它?

感谢

2 个答案:

答案 0 :(得分:3)

您应该编译所有警告(例如g++ -Wall)。你会得到一个有用的警告。你想这样使用c_str

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

BTW,为什么要使用printf,为什么忘记\n格式字符串末尾的printf? (或使用fflush

更好的代码:

cout << name << endl;

答案 1 :(得分:2)

如果您需要std::string传递给接受/使用C风格字符串(const char *)进行输入的函数,请使用.c_str()。它返回const char *

这是您在需要使用现有库,系统调用等时应该做的事情。对于您自己的代码,通常最好找到更多的C ++方法。

在这种情况下:

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