问题标签 [strsafe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
829 浏览

string - _vscwprintf 的安全替代品

在 MSVC 中,许多字符串函数提供原始版本、安全版本和strsafe版本。例如,sprintfsprintf_sStringCchPrintf都是等价的,增加了安全性(通过某种度量)。

现在,我有一些代码可以做到:

分配正确大小的缓冲区。

在查看 strsafe 函数时,我找到了一个替代方法_vsnwprintf_s,但没有找到_vscwprintf. 谷歌的检查似乎没有返回任何东西。

是否有一种 strsafe 方式来编写那段代码,或者我缺少的替代函数,或者混合原始函数和 strsafe 函数是否可以接受?(没有关于当前方式的安全警告,在 /w4 上使用 PREfast 所有规则)

0 投票
2 回答
686 浏览

c - 字符串安全函数与安全增强型 CRT

StringCch* 函数是否被认为比 CRT 字符串函数的安全版本更安全。

StringCchCatW 比 wcscat_s 更安全吗?还是 StringCchCopyW 与 wcscpy_s?

0 投票
2 回答
13796 浏览

c++ - MinGW中没有strsafe.h?改用什么?

从这里编译第一个片段:http: //msdn.microsoft.com/en-us/library/ms682499 (VS.85).aspx

给出:d:\!TC\cpp\control.cpp:4:21: fatal error: strsafe.h: No such file or directory compilation terminated.

0 投票
1 回答
3527 浏览

c++ - 使用 StringCchPrintf 从子字符串构建字符串

我正在尝试从来自错误消息的子字符串构建字符串:

我希望第二个%s将被替换为 的值error_msg,但是输出是:

The error is: ☐☐a

我如何修改上面的代码以显示子字符串?

EDIT1 我也尝试了以下方法,但我得到的只是一个盒子。

0 投票
1 回答
972 浏览

c++ - 如所述,RtlStringCbPrintf 不在 ntstrsafe.h 中

我正在尝试将RtlStringCbPrintf与 Winsock 内核一起使用。我已经包含了 Ntstrsafe.h 但编译器给了我错误

如果我使用RtlStringCbPrintfARtlStringCbPrintfW那么它会编译。为什么我不能使用通用版本?在 Ntstrsafe.h 中,我看到RtlStringCbPrintfARtlStringCbPrintfW的原型声明,但没有RtlStringCbPrintf的声明,尽管评论引用了它。为什么我不能使用通用表单以便我的字符集属性选择要使用的版本?我的字符集属性设置为使用多字节字符集

0 投票
2 回答
4250 浏览

c++ - “char *”类型的参数与“STRSAFE_LPCWSTR”类型的参数不兼容

我有以下内容:

我通常会执行以下操作来复制新名称:

但现在我需要执行以下操作:

但我得到了错误:

“char *”类型的参数与“STRSAFE_LPCWSTR”类型的参数不兼容

如何将其复制到 dtzRecorder.TimeZoneKeyName?

0 投票
2 回答
153 浏览

c++ - 找不到支持区域设置的 StrSafe 函数 (StringCbPrintf_lW)

我们(错误地)使用 StringCbPrintfW 编写了一个数据库查询,该查询在任何使用逗号作为小数分隔符的语言环境中都失败了。修复很容易,对吧?采用语言环境的 StringCbPrintf_lW 也在 strsafe.h 中定义。两者都定义如下:

所以只需创建语言环境并将 StringCbPrintfW 替换为 StringCbPrintf_lW。

Intellisense 高兴,GoToDefinition 高兴,ClCompile 不高兴。我不断得到

错误 C3861:“StringCbPrintf_lW”:未找到标识符

有什么想法有什么问题吗?

0 投票
1 回答
794 浏览

opencv - Mingw 在编译 OpenVC 库时找不到文件 strsafe.h

我想开始使用 OpenCV 库,但是在构建过程中遇到了问题。我在使用 Mingw 编译器的 Windows 10 上。一段时间后,当我启动命令mingw32-make时,出现以下错误:

C:\Github\opencv\modules\videoio\src\cap_dshow.cpp:337:21: fatal error: strsafe.h: No such file or directory #include <strsafe.h> ^ compilation terminated. modules\videoio\CMakeFiles\opencv_videoio.dir\build.make:187: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dshow.cpp.obj' failed mingw32-make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_dshow.cpp.obj] Error 1 CMakeFiles\Makefile2:4340: recipe for target 'modules/videoio/CMakeFiles/opencv_videoio.dir/all' failed mingw32-make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2 Makefile:159: recipe for target 'all' failed mingw32-make: *** [all] Error 2

在此处输入图像描述

被指控的文件是cap_dshow.cpp,编译器说缺少头文件strsafe.h。在文件夹 C:\MinGW\include 内,此文件不存在,我不知道在哪里可以找到它。

我已经使用名为“MinGW 安装管理器”的工具安装了 MinGW 编译器(和其他东西)。使用此工具,我还可以安装其他库,但我不知道其中一个库是否包含文件strsafe.h

在此处输入图像描述

我的问题可能与重复,但接受的答案链接已断开。

0 投票
2 回答
269 浏览

c++ - 为什么错误 C6386 缓冲区溢出 strsafe.h StringCch 函数?

所以我用我的 C++ 代码在 VS 2017 中运行了分析。它给了我一个缓冲区溢出,如下所示:

当我单步执行代码时,sTemp 是“0123”,第 4 位当然是 \0。

当我对代码运行分析时,我收到 C6386 错误:

为什么?我还尝试将数组更改为 10,将 StringCchCopy 更改为 5,但仍然出现相同的错误。

0 投票
1 回答
295 浏览

c++ - StringCch* 函数和 Cstring

我在我的代码中使用字符串安全函数 (StringCch*)。但是,有些函数我想将变量从 转换WCHAR *CString. 此代码在 StringCchCopy 函数上失败:

简单的答案我敢肯定,但我有点难过!

并且GetAllocLength()返回 71。它不应该返回 64 吗?