当前位置:   article > 正文

关于c++中printf语句输出string类型乱码_c++ %s乱码

c++ %s乱码
string s="helloworld";
printf("%s",s);
  • 1
  • 2

运行上述程序,会出现下面的结果。
在这里插入图片描述这是怎么回事啊,%s对应字符串类型,应当没有错啊。
如果将输出语句改成cout,输出则会恢复正常。
printf只能输出C语言中的内置数据,string不是c语言内置数据
更深入的来说:s这个string类型的对象并非单单只有字符串,其内还有许多用于操作的函数,于是&s并非字符串“helloworld”的首地址,而是s这个对象的首地址。
所以要做如下操作:
string s = “helloworld”;
printf("%s" , s.c_str());//string中c_str()成员方法返回当前字符串的首字符地址。
所以方便点还是cout吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/394768
推荐阅读
相关标签
  

闽ICP备14008679号