将 CString 转换为字符类型
Converting CString to type char?
我知道这对专家来说可能是一个愚蠢的问题,但我只是想知道是否可以在调用时将 CString 类型的变量传递到下面声明的函数中?
void LoadFile(char * szFileName);
发生以下错误:"加载文件":无法将参数 1 从"类 CString"转换为"字符 *"...
我可以以某种方式转换字符串吗?
感谢您的评论...
弗雷迪的回答几乎是正确的。 问题实际上出在 LoadFile() 的签名上。 它可能不应该采用字符*参数。 它可能应该采用一个常量字符*参数。 您是否打算将传入的字符串修改为 LoadFile()? 如果没有,如果源头在你的控制之下,并且如果你不会破坏太多东西,那就让它变得足够了。
实际上,您必须这样做:
CString filename("somefile.txt");
LoadFile((LPSTR)(LPCSTR) filename); // need the extra cast to (LPSTR)
或
LoadFile((LPSTR) filename.GetString());
这一切都是假设你不是为 Unicode 构建的。 如果你正在为 Unicode 构建,情况会有所不同。
如果您正在为 Unicode 构建,我会将函数签名更改为:
void LoadFile(LPCTSTR szFileName); // LPCTSTR == const TCHAR* (TCHAR is char for MBCS and wchar_t for Unicode)
你的编译器准确地告诉你出了什么问题。您正在传递一个自定义对象CString
并且您调用的函数需要一个 c 样式的字符串(带有空终止符的 char *)。
您需要的是访问 CString
类正在包装的 c 样式字符串。您可以在此处的 MSDN 文档页面上找到有关此内容的详细信息。
只需将您的论点视为LPCSTR
.
CString file("somefile.txt");
LoadFile((LPCSTR)file);
使用 GetBuffer
成员函数,该函数返回 LPSTR...
https://msdn.microsoft.com/en-us/library/aa315043%28v=vs.60%29.aspx
相关文章:
- 字符类型转换不兼容
- 将超出范围的整数分配给有符号字符类型
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 如何从文本文件中读取数值,直到遇到字符类型?
- 结构 init:字符**类型的标量初始值设定项两边的大括号
- 有没有办法将字符类型转换为整数?
- if(双精度类型 == 字符类型)
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 如何将字符类型变量附加到字符串中?
- 成本字符*类型的非常量引用的无效初始化,并且来自常量字符*类型的临时引用
- 基于字符类型的string_view模板
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- 字符类型声明和验证
- 如何编写模板函数来添加整数但连接字符串和字符类型?
- 我的编辑距离递归代码中的字符类型有问题
- 为什么 QVariant 将字符类型视为整数类型
- 将文件内容复制到容器而不是字符类型
- C++ 如何从用户输入中读取第一个字符并忽略 rest(字符类型)
- 字符和常量字符[2] 类型的操作数无效到二进制运算符
- 对于不确定值的无符号字符类型,标准中特殊语言对于左值到右值的转换有什么意义?