是否可以在 C++/CLI 中获取指向 String^ 内部数组的指针?

2024-03-13

目标是避免在需要时复制字符串数据const wchar_t*.

答案似乎是肯定的,但是函数PtrToStringChars https://stackoverflow.com/questions/1062962/systemstring-to-lpcwstr/1063154#1063154没有自己的 MSDN 条目(仅在知识库和博客中作为技巧提及)。这让我产生了怀疑,我想和你们核实一下。使用该功能安全吗?


这是一个基于 PtrToStringChars 的完整解决方案,它访问托管字符串内部,然后使用标准 C 函数复制内容:

wchar_t *ManagedStringToUnicodeString(String ^s)
{
    // Declare
    wchar_t *ReturnString = nullptr;
    long len = s->Length;

    // Check length
    if(len == 0) return nullptr;

    // Pin the string
    pin_ptr<const wchar_t> PinnedString = PtrToStringChars(s);

    // Copy to new string
    ReturnString = (wchar_t *)malloc((len+1)*sizeof(wchar_t));
    if(ReturnString)
    {
        wcsncpy(ReturnString, (wchar_t *)PinnedString, len+1);
    }

    // Unpin
    PinnedString = nullptr;

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

是否可以在 C++/CLI 中获取指向 String^ 内部数组的指针? 的相关文章

  • 使用格式模板解析字符串?

    如果我可以使用格式化字符串 string Format my 0 template 1 here 1 2 我可以反转该过程 我提供模板和填充的字符串 net 返回 arg0 arg1 等 没有优雅的方法来反转格式化的字符串 但如果你想要一个
  • 映射枚举列表

    我有一个名为 UserPermissions 的表 其中通过 userId 与用户表进行 FK 然后是一个用于枚举字符串值的字符串列 我看到的错误是 NHibernate MappingException 表 UserPermissions
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 如何将字符串转换为二进制?

    我需要一种方法来获取 python 中字符串的二进制表示形式 例如 st hello world toBinary st 是否有一个模块可以以某种巧妙的方式执行此操作 像这样的东西吗 gt gt gt st hello world gt g
  • 为什么 String 类扩展了 Object

    看着String类声明 你可以看到它扩展了Object class public final class String extends Object implements Serializable Comparable
  • 2 批字符串问题

    1 是否有任何内置函数可以告诉我变量的内容是否仅包含大写字母 2 有没有办法查看变量是否包含字符串 例如 我想查看变量 PATH 是否包含 Ruby 对于第 1 部分 findstr就是答案 您只需使用正则表达式功能即可errorlevel
  • 用于查找字符串差异的位运算

    我的以下字符串试图找出两个字符串之间的差异 但当它迭代字符串的长度时 速度非常慢 include
  • 获取ERLANG中的最长公共子序列

    我是这个 ERLANG 的新手 我了解基础知识 这就像计划 但范围更广 我知道如何创建一个函数 但在创建一个获取最长公共子序列的函数时遇到问题 lcs str1 str2 是一个接受两个字符串并输出一个整数的函数 lcs algorithm
  • Golang中如何删除字符串的最后一个字符?

    我想删除字符串的最后一个字符 但在此之前我想检查最后一个字符是否是 如何才能做到这一点 以下是删除尾随加号的几种方法 package main import fmt strings func TrimSuffix s suffix stri
  • 将数据框中的每个 x 个字符拆分为字符串

    我知道这里有一些关于每隔一段时间分割一个字符串的答案nth字符 例如this one https stackoverflow com questions 23208490 split each character in r and this
  • 当字符串的长度大于n时,如何打印字符串的前n个字节?

    所以我有一个具有一定字节数 或长度 的字符串 我说字节是因为字符串末尾没有 NULL 终止符 不过 我知道绳子有多长 通常 众所周知 当您printf s str 它将继续打印每个字节 直到到达 NULL 字符 我知道没有 C 字符串不是
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • gcc 没有小字符串优化吗?

    Most std string实现 包括 GCC 使用小字符串优化 例如 有一个answer https stackoverflow com a 21710033 2640636讨论这个 今天 我决定检查我编译的代码中的字符串在什么时候被移
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • Mockito:匹配除一个之外的任何字符串[重复]

    这个问题在这里已经有答案了 如何使用 Mockito 编写匹配器来匹配除特定字符串之外的任何字符串 我尝试使用一些 hamcrest 匹配器来否定和组合其他匹配器 但是 hamcrest 匹配器都返回类型的值Matcher
  • Android:比 android:ellipsize="end" 更好的东西可以将“...”添加到截断的长字符串中?

    这个性质 https stackoverflow com questions 1666736 android textview automatically truncate and replace last 3 char of string
  • 如何在 python 3.x 中使用 string.replace()

    The string replace 在 python 3 x 上已弃用 这样做的新方法是什么 与 2 x 一样 使用str replace https docs python org library stdtypes html str r
  • 如何消除字符串中的所有换行符?

    我需要删除字符串中出现的所有换行符 来自数据库 我使用下面的代码来做到这一点 value Replace r n Replace n Replace r 我可以看到至少有一个角色的行为就像行尾一样幸存了下来 字符代码是8232 http w
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 在 String.Format 中插入格式化字符?

    我用谷歌搜索了这个 但 VB Net 2008 似乎不允许在 String Format 中插入格式化字符 例如 t r n BAD MessageBox Show String Format 0 tab 1 Foo Bar BAD Mes

随机推荐

  • 如何在每页显示子报表的标题?

    我需要在C1Report设计器中设置什么属性才能在每个新页面上显示我的子报表的标题 Repeat true 设置该属性后 子报表不会在每个新页面上显示标题 它确实工作得很好Main Report tho 您需要在子报表的主键字段上添加分组
  • SSL_CTX_load_verify_locations 失败并显示 SSL_ERROR_NONE

    我到处搜索 但没有找到这个问题的解释 我正在运行以下命令 int ret 0 ERR clear error ret SSL CTX load verify locations ctx f 50 server SSLCACertificat
  • 如何在 Groovy 2.4 中计算 sha256 哈希值

    我正在尝试计算 Groovy 版本 2 4 16 中的 sha256 哈希值 这是 jmeter 测试的一部分 这是它支持的 Groovy 版本 我认为我无法更改它 我知道在 Groovy 2 5 中你可以使用这样的代码 https mrh
  • 如何使用javascript填写表单字段并提交?

    如果我有一个 html 文档 其大致结构是 div class headerstuff stuff div div class body div
  • 使用三元运算符而不是 IF THEN 有什么意义? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何实现全屏模式?

    在 Windows 操作系统下运行的应用程序如何实现像 Web 浏览器一样的全屏模式 它比最大化窗口和隐藏窗口装饰更复杂吗 表单样式 无 最大化 如果您指定语言 您可能会获得一些示例代码 EDIT 回应什么格雷格发布 https stack
  • 使用 ggplot2 中的 stat_poly_eq 指定每个方面的公式

    我借用了这个示例数据集here https stackoverflow com questions 44912496 geom smooth with facet grid and different fitting functions L
  • 异步方法恢复后值未更新

    看这段代码 public class SharedData public int Value get set void button1 Click object sender EventArgs e AAA async Task BBB S
  • Mercurial 卡在“等待锁定”状态

    克隆 Mercurial 存储库时 Windows 出现蓝屏 重新启动后 我现在几乎所有 hg 命令都会收到此消息 c src gt hg commit waiting for lock on repository c src McVrsS
  • 在比较四个字符的字符串时,有什么简单的方法可以检查两个或多个字符是否相等?

    我必须比较两个字符串 例如INTU and IXTE并检查两个或多个字符是否相同 对于前两个字符串 我想返回true 因为 I 和 T 相同 字符串中字母的顺序最终无关紧要 因为每个字符不能出现在字符串中的不同位置 似乎应该有一个简单的方法
  • 使用 dplyr 根据最大​​行值添加新列?

    我有一个大型数据库 其中包含一系列带有数字的列 我想用dplyr添加新列 mutate 其值是具有最大值的列的名称 所以 对于下面的例子 set seed 123 data frame bob rnorm 10 sam rnorm 10 d
  • 此计算机上未安装 Azure CLI 2.x

    我正在尝试使用 az storage blob upload batch 上传 blob 我遇到了以下两个例外 错误 此计算机上未安装 Azure CLI 2 x 错误 脚本失败 出现错误 错误 无法找到可执行文件 pwsh 请验证文件路径
  • 这是一个正确的线程安全随机包装器吗?

    我对线程和并发相当缺乏经验 为了解决这个问题 我目前正致力于在 F 中实现随机搜索算法 我遵循现有 C 示例的想法 围绕 System Random 类编写了一个包装器 但由于我不确定如何开始对其错误行为进行单元测试 所以我想听听更有经验的
  • 将 nvarchar 转换/转换为日期时间

    我有表 id timestamp 1 31 10 2020 16 32 11 2 09 09 2020 09 15 49 3 22 04 2020 02 48 15 表中有大量这些数据 列时间戳是数据类型 nvarchar 我需要按日期对数
  • 批处理cmd中弹出消息

    echo msgbox Hey Here is a message gt tmp tmp vbs cscript nologo tmp tmp vbs del tmp tmp vbs or echo msgbox Hey Here is a
  • 是否可以记住可组合函数的状态?

    我试图记住类型变量的状态 Composable gt Unit 我没有收到编译器错误 但应用程序在启动时崩溃 为什么会发生这种情况以及解决此问题的最佳方法是什么 最小可重现示例 Composable fun App isHappy Bool
  • ViewPager2.setOffscreenPageLimit()问题

    API 30 Android 10 0 Google API AVD x86 问题是 只是为了测试 ViewPager2 我将 ViewPager2 与 TabLayout 和附加片段一起使用 然后我将 离屏页面限制值 设置为 1 我预计将
  • 用于将数据导出到 Excel Sheet 的没有 HTML 代码的 JSP 页面

    我在将数据导出到 Excel 工作表时遇到问题 这是因为我团队中的其他开发人员编写了一些代码 因此 主要问题是使用 JSP 页面但不使用任何 HTML 代码将数据导出到 Excel 或 cvs 任何建议也将帮助我探索我的发展领域 感谢您的努
  • 如何使用PowerShell远程检查Web应用程序池的状态?

    我在运行 IIS7 的 Web 服务器上看到很多用于回收应用程序池的脚本 但是有没有办法使用 PowerShell 检查 Web 应用程序池是正在运行还是已停止 我似乎无法找到一种方法来远程让 Get WebAppPoolState 返回应
  • 是否可以在 C++/CLI 中获取指向 String^ 内部数组的指针?

    目标是避免在需要时复制字符串数据const wchar t 答案似乎是肯定的 但是函数PtrToStringChars https stackoverflow com questions 1062962 systemstring to lp