带CStrings的C ++错误C2664

时间:2015-08-18 15:06:04

标签: c++ visual-c++

我有一些旧的C ++文件,我知道用来编译。我已经创建了一个新的Visual C ++版本6。

我在CStrings上遇到很多关于无法转换为const char *

的编译错误

这是一个例子。

CString dogs = "test";
writeoutfile(dogs, 1);

void Crender::writeoutfile(CString data, long data_size) {}

我收到此错误:

  

错误C2664:'void __thiscall Crender :: writeoutfile(const char *,long)':无法将参数1从'class CString'转换为'const char *'

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您必须获取指向char字段的原始指针。这可以通过

完成
CString::GetBuffer()

所以你可以打电话给

writeoutfile(dogs.GetBuffer(), 1);

答案 1 :(得分:0)

CString应该转换为const char *。它是Unicode构建吗?这是我能想到的唯一解释。

GetBuffer()用于获取指向CString中包含的数据的可写指针。不要那样做!