从 System::String ^ 到 const wchar_t * 的字符串转换

标签 string c++-cli widechar

我正在尝试使用字符串参数打开文件,但出现以下错误:

error C2664: 'void std::basic_ifstream<_Elem,_Traits>::open(const wchar_t *,std::ios_base::openmode,int)' : cannot convert parameter 1 from 'System::String ^' to 'const wchar_t *'

如何将 System::String ^ 转换为 const wchar_t *

最佳答案

正如 Hans 指出的那样,简单的转换是必要的。它看起来类似于以下内容:

System::String ^str = L"Blah Blah";
pin_ptr<const wchar_t> convertedValue = PtrToStringChars(str);  // <-- #include <vcclr.h>
const wchar_t *constValue = convertedValue;                     // <-- Unnecessary, but to be completely verbose
void std::basic_ifstream<_Elem, _Traits>::open(constValue, mode, i);

关于从 System::String ^ 到 const wchar_t * 的字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22529094/

相关文章:

c# - 如何将 session 变量与 C# 中的字符串进行比较?

Java检查字符串中的所有字符是否存在于给定的字符串数组中

widechar - Linux 上 __FUNCTION__ 的宽版本

c++ - 有没有办法,或者需要写一个通用的模板化字 rune 字

c、修剪字符串和宽字符

java - 如何计算以字符串形式给出的数学表达式?

c - 在c中的字符串左侧添加空格

c# - 在 C# 中生成运行时代码(结构、类)

C++ CLI System.String^ 到 MFC LPCTSTR

c++-cli - 如果支持 C# 和 VB.NET,你会使用 C++/CLI 吗?