LPCSTR str2;
float a,b;
CStdioFile file1,file2;
CString str,str1;
if(!file1.Open(m_fileFolder1,CStdioFile::modeRead))
{
::AfxMessageBox(_T("不能打开文件!"));
return;
}
file2.Open(m_fileFolder2,CStdioFile::modeCreate | CStdioFile::modeWrite);
int len;
while(file1.ReadString(str))
{
len=str.GetLength();
USES_CONVERSION;
str2=W2A(str.GetBuffer(len));
str.ReleaseBuffer();
sscanf_s(str2,"%f %f",&a,&b);
str1.Format(_T("%.3f,%.3f\n"),a,b);
file2.WriteString(str1);
}
数据格式
900.000 123.146
900.125 123.146
900.250 123.146
900.375 123.146
900.500 123.146
……
这个问题折腾了两天了,没找到答案,上网求助一下。读入一个文本文档数据,当数据量小的时候没有问题,当数据量稍大些时(12000行左右),就在ReadString(str)这一行出错了,提示是访问冲突,我用的版本是VS2005
哪儿大侠帮忙解决一下。
float a,b;
CStdioFile file1,file2;
CString str,str1;
if(!file1.Open(m_fileFolder1,CStdioFile::modeRead))
{
::AfxMessageBox(_T("不能打开文件!"));
return;
}
file2.Open(m_fileFolder2,CStdioFile::modeCreate | CStdioFile::modeWrite);
int len;
while(file1.ReadString(str))
{
len=str.GetLength();
USES_CONVERSION;
str2=W2A(str.GetBuffer(len));
str.ReleaseBuffer();
sscanf_s(str2,"%f %f",&a,&b);
str1.Format(_T("%.3f,%.3f\n"),a,b);
file2.WriteString(str1);
}
数据格式
900.000 123.146
900.125 123.146
900.250 123.146
900.375 123.146
900.500 123.146
……
这个问题折腾了两天了,没找到答案,上网求助一下。读入一个文本文档数据,当数据量小的时候没有问题,当数据量稍大些时(12000行左右),就在ReadString(str)这一行出错了,提示是访问冲突,我用的版本是VS2005
哪儿大侠帮忙解决一下。
我网络课程设计的时候,因为VS2005 使用Unicode字符集的原因弄了好久....
刚开始时用GetBuffer()不可以;最好用这个函数解决了
CString sendString = _T("昆");
char str[256] = "";
WideCharToMultiByte( CP_OEMCP, NULL, sendString, -1, str, 256, NULL, FALSE );
这种方法确实可以解决问题,但我没搞明白GetBuffer有什么问题