假设我有一个十六进制字符串,它是从一组字节中计算出来的,采用适合我的特定格式:
std::string s("#00ffe1");
而且我还没签名到std::cout
std::cout << s;
//prints:
#00ffe1
虽然我喜欢cout的工作方式,但出于我的目的,使用fprintf
更容易,因为这是输出格式化字符串,使用fprintf
更容易。
我从fprintf
开始写同样的字符串:
fprintf(stdout,"foo=%s",s);
// outputs:
G* // (i.e., nonsense)
如何使用fprintf
输出这个字符串?
3条答案
按热度按时间dw1jzc5e1#
std::string
是一个类,而不是C中使用的“字符串”(fprintf
的来源)。%s
说明符需要一个指向char []
的空终止数组的指针。使用std::string
方法c_str()
返回空终止字符串,并将 that 传递给fprintf
:tf7tbtn22#
你需要使用
c_str()
成员函数将std::string
转换为一个以空值结尾的const char*
:注意,即使使用
fprintf()
,这仍然是C++。C不包含数据类型std::string
。56lgkhnf3#
fprintf
需要一个C样式的字符串char*
。std::string
有一个c_str()
方法,该方法返回以下内容: