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 删除。