这段代码使用 wstring 和 MultiByteToWideChar 安全吗?

2024-03-11

Using std::wstring我现在的样子MultiByteToWideChar?

std::wstring widen(const std::string &in)
{
    int len = MultiByteToWideChar(CP_UTF8, 0, &in[0], -1, NULL, 0);
    std::wstring out(len, 0);
    MultiByteToWideChar(CP_UTF8, 0, &in[0], -1, &out[0], len);
    return out;
}

如果你问它会起作用吗?这是对的吗?

  1. 你应该使用in.c_str()代替&in[0]
  2. 您应该检查返回值MultiByteToWideChar至少是第一次。
  3. MultiByteToWideChar如果成功,将以 (-1) 长度调用include考虑到零终止符(即成功时它将始终返回 >= 1)。长度构造函数std::wstring不需要这个。std::wstring(5,0)将为六个宽字符分配空间; 5+零项。因此从技术上讲,您分配了太多的宽字符。

From MultiByteToWideChar http://msdn.microsoft.com/en-us/library/windows/desktop/dd319072%28v=vs.85%29.aspx文档于cbMultiByte and -1:

如果此参数为 -1,则该函数将处理整个输入字符串,包括终止空字符。因此,生成的 Unicode 字符串具有终止空字符,并且函数返回的长度包括该字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这段代码使用 wstring 和 MultiByteToWideChar 安全吗? 的相关文章

随机推荐

  • iOS 中的 HTTP“POST”请求

    我需要发布到这个网址 https api platform com media 我对 HTTP 请求非常陌生 我需要发送一个包含图像和其他 3 个参数的请求 我有我需要的价值观 但我不知道从哪里开始或它如何工作 标题 Content Len
  • 如何在选择 TextBlock 中的文本的位置显示弹出窗口

    我想添加一个弹出窗口到我的TextBlock 当我选择 TextBlock 中的文本时 弹出窗口将显示在所选位置 有点像 Microsoft Edge 中的阅读模式 当您在阅读模式下选择文本时 将会有一个弹出窗口显示单词的定义 但我不知道怎
  • 如何在 Windows 上创建通知气球?

    我想创建一个简单的命令行工具来发布这样的快速通知 我希望该工具尽可能简单 尽可能小 所以我选择在CPP中编码 并直接使用Win32 API I found 指南非常有用 但看来这个Shell NotifyIconAPI 需要一个有效的hWn
  • 打开 xlsx 文件时出现 HRESULT 异常:0x80010105 (RPC_E_SERVERFAULT)

    我有一个例外 这让我发疯 当我尝试以这种方式打开 xlsx 文件时 Microsoft Office Interop Excel Application app new Microsoft Office Interop Excel Appl
  • 如何在 C 中搜索命令行参数? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我已经编译并运行了 C 代码 很多文件 但我需要理解命令行参数的物理含义 我运行这样的代码 testmt signal1 3 5 1 1 在
  • malloc()在哪里分配内存?是进程虚拟地址空间的数据段还是堆段?

    自从我被介绍到C 有人告诉我 在C动态内存分配是使用中的函数完成的malloc家庭 我还了解到 使用动态分配内存malloc分配在进程的堆部分 各种操作系统教科书都这么说malloc涉及系统调用 虽然并不总是但有时 来将堆上的结构分配给进程
  • 从汇总函数中提取参数系数[重复]

    这个问题在这里已经有答案了 我已经拟合了一个线性回归模型 Lin lt lm y x data df 当我使用summary函数 我得到一些输出 如何从该输出中提取参数系数 以下是获取参数估计值的几种方法 R gt m lm y x R g
  • 获取 Django ALLOWED_HOSTS 环境。变量直接在 settings.py 中格式化

    我面临以下问题 我的 env 文件包含如下行 export SERVERNAMES localhost domain1 domain2 domain3 lt exactly this kind of format 但变量称为SERVERNA
  • 返回连续缺失的工作日日期并在缺失日期旁边分配费率

    Dates rates 7 26 2019 1 04 7 30 2019 1 0116 7 31 2019 1 005 8 1 2019 1 035 8 2 2019 1 01 8 6 2019 0 9886 8 12 2019 0 965
  • CSS3相当于jQuery的slideUp和slideDown?

    我的应用程序在使用 jQuery 的 SlideDown 和 SlideUp 时表现不佳 我希望在支持 CSS3 的浏览器中使用 CSS3 等效项 是否可以使用 CSS3 转换来更改元素display none to display blo
  • WSImport 为多个 Dynamics CRM 4.0 WSDL 生成冲突的 XMLType

    我目前正在使用 Dynamics CRM 4 0 Web 服务 我做的第一件事是使用 wsimport 生成正确的类Java JAX WS基于 Web 服务的 WSDL 在生成类时我遇到了一些错误 ERROR A class interfa
  • 使用 jQuery 拖动时滚动页面

    我尝试过使用kinetic js和下面的代码 但是当我在IE11中尝试这个时 每次滚动时它都会跳到顶部 html kinetic 我想让页面在平板电脑以及 IE10 和 11 上可滚动 以便用户只需向上推动页面即可向下滚动 就像在移动设备上
  • OleDbConnection 字符串和 unicode

    在我的程序中 我正在从 HTML 文件读取数据 但在该文件中 有时有些包含 unicode 字符的文本数据会被转换回 UTF 8 米歇尔 gt 米歇尔 我使用以下代码从文件中检索数据 string ConnectionString stri
  • 使用 qplot 绘制函数族,无需重复数据

    给定函数族f x q x是论证并且q是参数 我想可视化这个函数族x从区间取 0 1 对于 9 个值q 从 0 1 到 0 9 到目前为止我的解决方案是 f function p q 0 9 1 1 p q 3 1024 x seq 0 0
  • 重写和非重写构造函数

    我只是想问一个简单的问题 我有一个从 TLabel 派生的类 如下所示 TMyLabel class TLabel constructor Create AOwner TComponent override end constructor
  • 如何静音 SpeechRecognizer 的嘟嘟声?

    以前有人问过这个问题 但似乎没有人有解决方案 静音 SpeechRecognizer 蜂鸣声 https stackoverflow com questions 24579197 muting speechrecognizers beep
  • Kafka:多个实例中的单个消费者组

    我正在致力于为我们的应用程序实施基于 Kafka 的解决方案 根据 Kafka 文档 我的理解是消费者组中的一个消费者 即一个线程 在内部映射到订阅主题中的一个分区 假设我有一个包含 40 个分区的主题 并且有一个在 4 个实例中运行的高级
  • 它们真的是虚拟代码吗?

    某些按键的虚拟按键代码 例如移位 Del 等与 C C 相比 在 java 中显示为不同的值 例如 Key Java C C Shift 16 160 91 219 93 221 92 220 Del 127 46 Window 524 9
  • 如何为另一个类型类中的所有类型编写实例?

    我必须定义一个类型类Truthy其中包含一个方法true将类型类的实例转换为Bool value 我的类型类声明 class Truthy a where true a gt Bool 接下来 我必须为各种类型定义此类的实例 包括列表和数字
  • 这段代码使用 wstring 和 MultiByteToWideChar 安全吗?

    Using std wstring我现在的样子MultiByteToWideChar std wstring widen const std string in int len MultiByteToWideChar CP UTF8 0 i