我正在使用这段代码来格式化WideString,但是没有成功!它打印意外的结果:(
以下是我的代码
WideString s;
dep=new TStringList();
while(!DM->tDepPln->Eof)
{
//where tDepPlnFltNo is mysql field type of WideString
s.sprintf(L"%-11S",DM->tDepPlnFltNo->AsWideString);
dep->Add(s);
DM->tDepPln->Next();
}当我使用s.sprintf(L"%-11S","blablabla");时,它可以工作,但当我将mysql字段类型设置为WideString时,它就不能工作了!我认为问题出在转换上!
如何纠正它?
发布于 2011-11-24 06:16:08
您的格式说明符使用的是大写S,它告诉Unicode式的...printf()函数(比如WideString:::sprintf()内部使用的函数)需要char*而不是wchar_t* ( Ansi风格的...printf()函数需要wchar_t*而不是char*)。这就是s.sprintf(L"%-11S","blablabla")工作的原因--你给它传递了一个char*。
对于您正在尝试的内容,您需要使用小写的s。在将WideString值传递给...printf()函数时,还需要使用WideString::c_bstr()方法,例如:
s.sprintf(L"%-11s", DM->tDepPlnFltNo->AsWideString.c_bstr());https://stackoverflow.com/questions/8248311
复制相似问题