赞
踩
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吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。