【发布时间】:2010-03-05 21:42:40
【问题描述】:
我陷入了 printf 问题。如果我能在这里得到一些帮助,我将不胜感激: 在下面的代码中,我可以看到字体系列在第一个 printf() 中被正确替换, 但如果我将它设置为变量,我只会得到一个空字符串。我怎样才能把它放在一个变量中并拥有正确的值?我只是不想到处输入'font.family().family().string().utf8().data()'?
我用同样的方法做到了:
void myMethod() {
const char* fontFamily = font.family().family().string().utf8().data();
// get displayed correctly
printf ("drawText1 %s \n", font.family().family().string().utf8().data());
// get an empty string
printf ("drawText2 %s \n", fontFamily);
}
'data()' 的签名是
class CString {
public:
CString() { }
CString(const char*);
CString(const char*, unsigned length);
CString(CStringBuffer* buffer) : m_buffer(buffer) { }
static CString newUninitialized(size_t length, char*& characterBuffer);
const char* data() const;
//...
}
utf8()的签名是
class String {
CString utf8() const;
}
谢谢。
【问题讨论】:
-
这个字体库是什么? C++ 没有这样的东西。也许尝试包括
data()返回的类型。附带说明一下,有什么理由不使用std::string/std::cout? -
了解
.data()方法的签名会有所帮助。 -
而family.string()返回一个CString类型的临时对象?
-
得墨忒耳法则怎么了?
-
我们很可能需要有关 data() 的更多详细信息。你能发布完整的实现吗?
标签: c++ printf const-char