问题标签 [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.
string - _vscwprintf 的安全替代品
在 MSVC 中,许多字符串函数提供原始版本、安全版本和strsafe版本。例如,sprintf
、sprintf_s
和StringCchPrintf
都是等价的,增加了安全性(通过某种度量)。
现在,我有一些代码可以做到:
分配正确大小的缓冲区。
在查看 strsafe 函数时,我找到了一个替代方法_vsnwprintf_s
,但没有找到_vscwprintf
. 谷歌的检查似乎没有返回任何东西。
是否有一种 strsafe 方式来编写那段代码,或者我缺少的替代函数,或者混合原始函数和 strsafe 函数是否可以接受?(没有关于当前方式的安全警告,在 /w4 上使用 PREfast 所有规则)
c - 字符串安全函数与安全增强型 CRT
StringCch* 函数是否被认为比 CRT 字符串函数的安全版本更安全。
StringCchCatW 比 wcscat_s 更安全吗?还是 StringCchCopyW 与 wcscpy_s?
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.
c++ - 使用 StringCchPrintf 从子字符串构建字符串
我正在尝试从来自错误消息的子字符串构建字符串:
我希望第二个%s
将被替换为 的值error_msg
,但是输出是:
The error is: ☐☐a
我如何修改上面的代码以显示子字符串?
EDIT1 我也尝试了以下方法,但我得到的只是一个盒子。
c++ - 如所述,RtlStringCbPrintf 不在 ntstrsafe.h 中
我正在尝试将RtlStringCbPrintf与 Winsock 内核一起使用。我已经包含了 Ntstrsafe.h 但编译器给了我错误
如果我使用RtlStringCbPrintfA或RtlStringCbPrintfW那么它会编译。为什么我不能使用通用版本?在 Ntstrsafe.h 中,我看到RtlStringCbPrintfA和RtlStringCbPrintfW的原型声明,但没有RtlStringCbPrintf的声明,尽管评论引用了它。为什么我不能使用通用表单以便我的字符集属性选择要使用的版本?我的字符集属性设置为使用多字节字符集
c++ - “char *”类型的参数与“STRSAFE_LPCWSTR”类型的参数不兼容
我有以下内容:
我通常会执行以下操作来复制新名称:
但现在我需要执行以下操作:
但我得到了错误:
“char *”类型的参数与“STRSAFE_LPCWSTR”类型的参数不兼容
如何将其复制到 dtzRecorder.TimeZoneKeyName?
c++ - 找不到支持区域设置的 StrSafe 函数 (StringCbPrintf_lW)
我们(错误地)使用 StringCbPrintfW 编写了一个数据库查询,该查询在任何使用逗号作为小数分隔符的语言环境中都失败了。修复很容易,对吧?采用语言环境的 StringCbPrintf_lW 也在 strsafe.h 中定义。两者都定义如下:
所以只需创建语言环境并将 StringCbPrintfW 替换为 StringCbPrintf_lW。
Intellisense 高兴,GoToDefinition 高兴,ClCompile 不高兴。我不断得到
错误 C3861:“StringCbPrintf_lW”:未找到标识符
有什么想法有什么问题吗?
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。
我的问题可能与此重复,但接受的答案链接已断开。
c++ - 为什么错误 C6386 缓冲区溢出 strsafe.h StringCch 函数?
所以我用我的 C++ 代码在 VS 2017 中运行了分析。它给了我一个缓冲区溢出,如下所示:
当我单步执行代码时,sTemp 是“0123”,第 4 位当然是 \0。
当我对代码运行分析时,我收到 C6386 错误:
为什么?我还尝试将数组更改为 10,将 StringCchCopy 更改为 5,但仍然出现相同的错误。
c++ - StringCch* 函数和 Cstring
我在我的代码中使用字符串安全函数 (StringCch*)。但是,有些函数我想将变量从 转换WCHAR *
为CString
. 此代码在 StringCchCopy 函数上失败:
简单的答案我敢肯定,但我有点难过!
并且GetAllocLength()
返回 71。它不应该返回 64 吗?