printf输出字符串
leetcode的练习14——最长公共前缀,遇到打印字符串的问题
string ss = { "\0" };
Solution sol1;
ss=sol1.longestCommonPrefix(s1);
printf("%s\n", &ss);
ss是一个string类型的变量,原本想通过printf直接打印字符串,结果以上方式输出乱码
于是上网找答案,居然惊讶的发现printf输出字符串是针对char *的,换言之,printf只能输出C语言中的内置数据,string不是c语言内置数据。
更深入的来说:ss这个string类型的对象并非单单只有字符串,其内还有许多用于操作的函数,于是&ss并非字符串的首地址,而是ss这个对象的首地址。
所以要做如下操作:
printf("%s\n", ss.c_str());
string中c_str()成员方法返回当前字符串的首字符地址
或cout<也可以达到这个目的。