char *a1; char ee[226]; CString str1 = "abcdefg"; sprintf(ee,"%s",str1); a1 = ee; MessageBox( a1 ); 
1、用上面的这个方式虽然可以将 str1 赋的值 转赋予 a1; 但是我以二进制存入文件,再读出来就不对了。2、如果用 a1 = "abcdefg" 直接赋值的方式,以二进制存入文件,再读出来就完全正确。

3、有哪个函数能将 CString 类型转换为 char *类型;

解决方案 »

  1.   

    char ee = strl.GetBuffer( strl.GetLength());
    strl.ReleaseBuffer();ee就是了你要求的了:)
      

  2.   

    char * ee = strl.GetBuffer( strl.GetLength());
    strl.ReleaseBuffer();ee就是了你要求的了:)
      

  3.   

    还有个方法:(char*)_bstr_t(str);
      

  4.   

    (const char*)str1
    这么转化一下就可以了。
      

  5.   

    CString strl="abcdefg";char * al=new char[strl.GetLength()];sprintf(al,"%s",strl);
      

  6.   

    http://www.csdn.net/Develop/Read_Article.asp?id=12365
    http://www.vckbase.com/study/article/data_convert.htm
    送給你
      

  7.   

    void CXGDebug::CString2Buf(CString& str, char *szBuf, int nSize)
    {
    char* buf;
    int nLen;
    if(0!=nSize)
    {
    buf=str.GetBuffer(nSize);
    strcpy(szBuf,buf);
    str.ReleaseBuffer();
    }
    else
    {
    nLen=str.GetLength();
    buf=str.GetBuffer(nLen);
    strcpy(szBuf,buf);
    str.ReleaseBuffer();
    }
    }
      

  8.   

    void CXGDebug::CString2Buf(CString& str, char *szBuf, int nSize)
    {
    char* buf;
    int nLen;
    if(0!=nSize)
    {
    buf=str.GetBuffer(nSize);
    strcpy(szBuf,buf);
    str.ReleaseBuffer();
    }
    else
    {
    nLen=str.GetLength();
    buf=str.GetBuffer(nLen);
    strcpy(szBuf,buf);
    str.ReleaseBuffer();
    }
    }
      

  9.   

    void CXGDebug::CString2Buf(CString& str, char *szBuf, int nSize)
    {
    char* buf;
    int nLen;
    if(0!=nSize)
    {
    buf=str.GetBuffer(nSize);
    strcpy(szBuf,buf);
    str.ReleaseBuffer();
    }
    else
    {
    nLen=str.GetLength();
    buf=str.GetBuffer(nLen);
    strcpy(szBuf,buf);
    str.ReleaseBuffer();
    }
    }
      

  10.   

    http://www.csdn.net/Develop/Read_Article.asp?id=12365
    http://www.vckbase.com/study/article/data_convert.htm
    送給你
      

  11.   

    转变成char* char=(LPSTR)(LPCTSTR)string即可
      

  12.   


    //===================
    //   部分代码
    char *aa;CString str = "absdefg";// 写文件
    void CKbDlg::OnButton1()
    {
        CFile  m_file;
    // 1、直接赋值,读出是正确的。
    aa = ""absdefg"; // 2、现在我想将 str 赋值给 aa; // 如何写: aa = str ?
        m_file.Open( "E:/文件.txt",CFile::modeCreate| CFile::modeWrite);
        m_file.WriteHuge( &aa,5);    m_file.Close();
    }// 读文件
    void CKbDlg::OnButton2()
    {
        CFile  m_file;
        m_file.Open( E:/文件.txt",CFile::modeRead );
        m_file.ReadHuge( &aa,5);
        m_file.Close(); // 显示读出的数据是否是:"absdefg"
    CString str = aa;
    MessageBox( aa );
    } 以上的各位兄弟给的方法我都实验过了,但是读出来的数据不是"absdefg";请各位在帮忙!
      

  13.   

    //===================
    //   部分代码改动
    char *aa;
    CString str = "absdefg";// 写文件
    void CKbDlg::OnButton1()
    {
        CFile  m_file;    m_file.Open( "E:\\文件.txt",CFile::modeCreate| CFile::modeWrite);
        m_file.WriteHuge( (LPCTSTR)str,5);    m_file.Close();
    }// 读文件
    void CKbDlg::OnButton2()
    {
        CFile  m_file;
        m_file.Open( "E:\\文件.txt",CFile::modeRead ); char buf[6];
    memset(buf, '\0', 6);
    aa = buf;
        m_file.ReadHuge( &aa,5);
        m_file.Close(); // 显示读出的数据是否是:"absdefg"
    CString str = aa;
    MessageBox( aa );
    MessageBox( (LPCTSTR)str );
    }
      

  14.   

    上面有个错误
    m_file.ReadHuge( &aa,5);
    错了应改为:
    m_file.ReadHuge( aa,5);
      

  15.   

    把aa改为TCHAR* AA[255];
    STRCMP(AA,STR);
      

  16.   

    可能我的问题没有说明白。如果用sunbo() 兄的方法,就违背了我的初衷。我用 char *aa 存储,而不用 char aa[255] 的方式。是因为 char *aa;
    aa = “123123232244343”和
    aa = “123123232244343fdsfdfdfsdfdfewdfsdfdsfsdfsdfsdfdsfdsfsdfsdfsdfsdfsdfdsfdsfdsfdsfdsfsdfsdfsdfsdfdfdfdfdfdfdfdfdfdfdfdfd”(文字可能更多)存入文件后,文件的大小不会改变。始终是:5 个字节!请求帮忙!!
      

  17.   

    代码重复一下:char *aa;// 写文件
    void CKbDlg::OnButton1()
    {
        CFile  m_file; // 1、直接赋值,读出是正确的。
    aa = "absdefrerereererereerererererewreg(文字不知道是多少)"; // 2、现在我想将 str 赋值给 aa; // 如何写: aa = str ?
        m_file.Open( "E:/文件.txt",CFile::modeCreate| CFile::modeWrite);
        m_file.WriteHuge( &aa,5);    m_file.Close();
    }// 读文件
    void CKbDlg::OnButton2()
    {
        CFile  m_file;
        m_file.Open( "E:/文件.txt",CFile::modeRead );
        m_file.ReadHuge( &aa,5);
        m_file.Close(); // 显示读出的数据是否是:
    CString str = aa;
    MessageBox( aa );
    }// 条件是必须要 用 char *aa;存储!
      

  18.   

    char* ch;
    ch= new char[CString.getlenth()];//自己注意大小写
    ch=LPCTSTR CString;//不知道要不要事先分配空间自己试试
      

  19.   

    最简单的办法
    CString str;
    char* ch;
    ch = str.GetBuffer(str.length());
      

  20.   

    关键是 将CString 类型 赋予 char * 类型后,写进文件里,在读出来就不对了。竟然是空值。用:
    char * aa;aa = "一些文字";写进文件里,可以正常的读出来!真不解!
      

  21.   

    我正在研究你的帖子,读取数据都没问题了,但取出的char*还没能存进CString,已完成的部分贴出来供参考.再试.
    void CMy3_3writereadDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    CFile m_file;
    str="1234567890";
    aa = str.GetBuffer(str.GetLength());
    str.ReleaseBuffer();
    m_file.Open( "d:/temp/aaa.txt",CFile::modeCreate|CFile::modeWrite);
    m_file.WriteHuge( aa,5);
    m_file.Close();
    }void CMy3_3writereadDlg::OnButton2() 
    {
    // TODO: Add your control notification handler code here
    CFile  m_file;
       m_file.Open( "d:/temp/aaa.txt",CFile::modeRead );
       m_file.ReadHuge( &aa,5);
       m_file.Close();
    }
      

  22.   

    void CAaDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here
    CString str="abcdef"; char a[10];  //a的大小你自己定义吧,我也不知你要多大可以是str.GetLength()
    strcpy(a,str); CFile m_file; m_file.Open("c:\\111.txt",CFile::modeCreate | CFile::modeWrite); m_file.WriteHuge(a,strlen(a));
    m_file.Close;}void CAaDlg::OnButton2() 
    {
    // TODO: Add your control notification handler code here
    char aa[10];
    CFile m_file;
    m_file.Open("c:\\111.txt",CFile::modeRead);
    m_file.ReadHuge(aa,6);
    m_file.Close;
    MessageBox(aa);
    }试试这个吧!兄弟
      

  23.   

    哦,忘了,注意在writehuge(a,strlen(a)+1);不然出错的
      

  24.   

    to : srg777:"我用 char *aa 存储,而不用 char aa[255] 的方式。是因为 char *aa;
    aa = “123123232244343”和
    aa = “123123232244343fdsfdfdfsdfdfewdfsdfdsfsdfsdfsdfdsfdsfsdfsdfsdfsdfsdfdsfdsfdsfdsfdsfsdfsdfsdfsdfdfdfdfdfdfdfdfdfdfdfdfd”(文字可能更多)"问题太多,理由如下:一、aa只是个指针,只有四个字节,想存任意多字节的内容,是不可能的,而且使用前一定要初始化。
    二、aa = “123123232244343”,为什么能用的原因,是“123123232244343”这块内存已经分配在全局区域了,aa只是初始化指向这个区域。
    三、“m_file.ReadHuge( &aa,5);”,aa仅仅是个指针,长度只有四个字节你却想给装入五个字节或更多字节。且aa没有做初始化,你就要用。你至少得 aa = new char[6],一个字节做为字符串结尾。函数用法也不对,应该是m_file.ReadHuge(aa,5)。
    四、说明一点,你的C语言的指针基础太差。兄弟,建议你,还是多看看书吧。
    五、分数也太少了,高手一般很少来,懂吗?到此打住吧!