首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用sprintf或wprintf正确格式化WideString

如何使用sprintf或wprintf正确格式化WideString
EN

Stack Overflow用户
提问于 2011-11-24 03:56:51
回答 1查看 3.3K关注 0票数 1

我正在使用这段代码来格式化WideString,但是没有成功!它打印意外的结果:(

以下是我的代码

代码语言:javascript
复制
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时,它就不能工作了!我认为问题出在转换上!

如何纠正它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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()方法,例如:

代码语言:javascript
复制
s.sprintf(L"%-11s", DM->tDepPlnFltNo->AsWideString.c_bstr());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8248311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档