首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >关于c++中printf语句输出string类型乱码

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

作者头像
用户7886150
修改于 2021-02-14 15:17:29
修改于 2021-02-14 15:17:29
2.5K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: C++ printf()

string s="helloworld";

printf("%s",s);

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

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档