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 *类型;
解决方案 »
- 完全不用MFC,只用WIN32API ,用C做个按钮,哪位懂,解释下原理,能给代码更好。谢谢了!
- CFileDialog 构造中的参数
- 两个问题, 1.收到部分乱码 2.线程问题.(在线等待)
- 我解码H264的数据后得到rgb565的数据,保存一帧、一帧的位图成功。但是贴图就失败,贴出来全是黑快。求高人指点下?下面贴代码!
- 很急的一个怪问题,关于图象显示
- 询问关于进程方面的知识
- 请教一个初级程序的代码规范问题,见代码:
- SDI程序中如何在VIEW 中访问MAINFRAME中的m_wndStatusBar
- 线程高手请进来!
- CWnd::FromHandlePermanent(Handle)是怎么实现的?
- 求救:中文与unicode之间如何转换?
- 关于菜单显示的一个问题,是用C写的
strl.ReleaseBuffer();ee就是了你要求的了:)
strl.ReleaseBuffer();ee就是了你要求的了:)
这么转化一下就可以了。
http://www.vckbase.com/study/article/data_convert.htm
送給你
{
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();
}
}
{
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();
}
}
{
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();
}
}
http://www.vckbase.com/study/article/data_convert.htm
送給你
//===================
// 部分代码
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";请各位在帮忙!
// 部分代码改动
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 );
}
m_file.ReadHuge( &aa,5);
错了应改为:
m_file.ReadHuge( aa,5);
STRCMP(AA,STR);
aa = “123123232244343”和
aa = “123123232244343fdsfdfdfsdfdfewdfsdfdsfsdfsdfsdfdsfdsfsdfsdfsdfsdfsdfdsfdsfdsfdsfdsfsdfsdfsdfsdfdfdfdfdfdfdfdfdfdfdfdfd”(文字可能更多)存入文件后,文件的大小不会改变。始终是:5 个字节!请求帮忙!!
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;存储!
ch= new char[CString.getlenth()];//自己注意大小写
ch=LPCTSTR CString;//不知道要不要事先分配空间自己试试
CString str;
char* ch;
ch = str.GetBuffer(str.length());
char * aa;aa = "一些文字";写进文件里,可以正常的读出来!真不解!
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();
}
{
// 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);
}试试这个吧!兄弟
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语言的指针基础太差。兄弟,建议你,还是多看看书吧。
五、分数也太少了,高手一般很少来,懂吗?到此打住吧!