加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

我可以在Microsoft C中测量sprintf所需的缓冲区吗?

发布时间:2021-03-04 16:06:16 所属栏目:站长百科 来源:网络整理
导读:我正在用Visual Studio 2008编写一个小概念验证控制台程序,我希望它输出彩色文本以便于阅读.为了便于编码,我还想进行快速的printf替换,我可以像这样编写: MyPrintf(L"Some text 1[bright red]goes here1[default]. %d",21); 这将非常有用,因为我还在某些

我正在用Visual Studio 2008编写一个小概念验证控制台程序,我希望它输出彩色文本以便于阅读.为了便于编码,我还想进行快速的printf替换,我可以像这样编写:

MyPrintf(L"Some text 1[bright red]goes here1[default]. %d",21);

这将非常有用,因为我还在某些地方构建并传递字符串,因此我的字符串将能够包含格式信息.

但是我碰到了wsprintf的墙,因为我找不到一个能让我在将它传递给函数之前找出所需缓冲区大小的函数.当然,我可以分配1MB即可,但这不会很漂亮,如果我找不到更好的方法,我宁愿将其作为备份解决方案.

另外,或者我正在考虑使用std :: wstring(我实际上更像是一个C级经验很少的C人,所以我现在发现简单的旧式char数组),但是没有像wsprintf这样的东西您可以在其中构建一个替换为值的字符串.

所以我该怎么做?

解决方法

你想要 _snwprintf.该函数需要一个缓冲区大小,如果缓冲区不够大,只需将缓冲区的大小加倍,然后再试一次.为了避免每次都要进行多次_snwprintf调用,请跟踪上次使用的缓冲区大小,并始终从那里开始.你会在这里和那里做一些多余的电话,你会不时地浪费一些公羊,但它很有效,并且不能超过任何东西.

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读