use*_*400 14 c++ string printf
我正在尝试按以下方式打印字符串:
int main(){
string s("bla");
printf("%s \n", s);
.......
}
Run Code Online (Sandbox Code Playgroud)
但我得到的只是随机的胡言乱语.
你能解释一下原因吗?
Mar*_*tos 26
因为%s
表示a char*
,而不是a std::string
.使用s.c_str()
或更好地使用,iostreams:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("bla");
std::cout << s << "\n";
}
Run Code Online (Sandbox Code Playgroud)
cod*_*ict 18
您需要使用c_str来获取与字符串内容等效的c-string,因为printf
不知道如何打印字符串对象.
string s("bla");
printf("%s \n", s.c_str());
Run Code Online (Sandbox Code Playgroud)
相反,你可以这样做:
string s("bla");
std::cout<<s;
Run Code Online (Sandbox Code Playgroud)