OLE DB连接access数据库,access表中的一个字段是文本类型,大小为26
VC中自动生成的代码是:
class CSample
{
public:
CSample()
{
memset( (void*)this, 0, sizeof(*this) );
}; wchar_t m_m_sample_time[14];
short m_m_value;
BEGIN_COLUMN_MAP(CSample)
COLUMN_ENTRY_TYPE(1, DBTYPE_WSTR, m_m_sample_time)
COLUMN_ENTRY_TYPE(2, DBTYPE_I2, m_m_value)
END_COLUMN_MAP()
};在后面我有个自己写的函数,其中一句代码:
strcpy(this->m_pSet->m_m_sample_time,str.GetBuffer(5));  //str为 CString类型但是编译就报错:: error C2664: 'strcpy' : cannot convert parameter 1 from 'unsigned short [14]' to 'char *'
      Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
font.cpp
是不是cstring 转 char不对?、
那这句代码该如何改?

解决方案 »

  1.   

    this->m_pSet->m_m_sample_time
    这个不是char*或char数组名?
      

  2.   

    CString s("abcd");
    char *c;
    c = new char[s.GetLength()+1];
    sscanf(s,"%s",c);
    c[s.GetLength()]='\0';
      

  3.   

    this->m_pSet->m_m_sample_time
    m_m_sample_time是数据表中的一个列名,是文本类型,大小是26
    VC自动生成的代码是:
    wchar_t m_m_sample_time[14];
    short m_m_value;
      

  4.   

    人家都告诉你是第一个参数有问题了,其实把一个CString拷贝到一个Buf中时都不需要转的,看看你第一个参数吧,都不是char *...
      

  5.   

    我知道,可是在access 设计的时候选择的是文本类型,vc自动生成代码wchar_t 类型,可是为什么最后报错说convert parameter 1 from 'unsigned short [14]' to 'char *'
      
    unsigned short[14]???
      

  6.   

    wchar_t 不就是 unsigned short 嘛。。你可以看看它的定义
      

  7.   

    回littlepboy(vc小p孩):在数据表中我定义的是文本类型呀?为什么VC中自动生成 wchar_t?
    那我想在数据表中用文本类型该怎么办?