//格式:x,y,z,t
1.1 2.2 3.3 4.4
9.9 10.1 11.14 12.12
(每行结束最后都有一个空格)
我的目的是每读一个数输出一个值,用对话形式输出;
现在碰到的情况是,第一行的数能正确读出来,但是第二行就有些问题了,9.9跟10.1能读出来,但后面11.14没显示出来,而是显示出来4,12.12也正常,不知道是怎么回事?
//测试程序基于对话框,添加一下按钮即可
void CReadStringDlg::OnButton1()
{
CString str,str1,str2,str3,str4;
double x=0,y=0,z=0,t=0;
CStdioFile *pFile=new CStdioFile();
pFile->Open("1.txt", CFile::modeRead);
while(pFile->ReadString(str))
{
CString temp;
str1=str.Left(str.Find(' '));
x=atof(str1);
MessageBox(str1);
str.TrimLeft(str1 + ' ');
str2 = str.Left(str.Find(' '));
y = atof(str2);
MessageBox(str2);
str.TrimLeft(str2 + ' ');
str3 = str.Left(str.Find(' '));
z =atof(str3);
MessageBox(str3);
str.TrimLeft(str3 + ' ');
str4 = str.Left(str.Find(' '));
t = atof(str4);
MessageBox(str4);
}
pFile->Close();
}
4 个解决方案
#1
有人知道了,我用断点调试了几遍,明明str2是10.1,然后加个空格把它截了之后str就应该变成"11.14 12.12 "才对,可怎么在调试时显示为"4 12.12 "呢
#2
您理解错了这个函数的意义
void CString::TrimRight( TCHAR chTarget );
void CString::TrimRight( LPCTSTR lpszTargets );
CString str = "\n\t a";
str.TrimLeft();
str为“a”;
如果没有参数,从左删除字符(\n\t空格等),至到遇到一个非此类字符.
当然你也可以指定删除那些字符.
如果指定的参数是字符串,那么遇上其中的一个字符就删除.
——————
10.1 11.14 12.12
在处理"10.1 "
显然前面的 "10.1 11.1" 都在被删除之列
void CString::TrimRight( TCHAR chTarget );
void CString::TrimRight( LPCTSTR lpszTargets );
CString str = "\n\t a";
str.TrimLeft();
str为“a”;
如果没有参数,从左删除字符(\n\t空格等),至到遇到一个非此类字符.
当然你也可以指定删除那些字符.
如果指定的参数是字符串,那么遇上其中的一个字符就删除.
——————
10.1 11.14 12.12
在处理"10.1 "
显然前面的 "10.1 11.1" 都在被删除之列
#3
以下MSDN的原文
Call the version of this member function with no parameters to trim leading whitespace characters from the string. When used with no parameters, TrimLeft removes newline, space, and tab characters.
Use the versions of this function that accept parameters to remove a particular character or a particular group of characters from the beginning of a string.
Call the version of this member function with no parameters to trim leading whitespace characters from the string. When used with no parameters, TrimLeft removes newline, space, and tab characters.
Use the versions of this function that accept parameters to remove a particular character or a particular group of characters from the beginning of a string.
#4
嗯,是我理解错了,还以后是剪掉左边的字符呢,呵呵,闹笑话了~谢谢了
#1
有人知道了,我用断点调试了几遍,明明str2是10.1,然后加个空格把它截了之后str就应该变成"11.14 12.12 "才对,可怎么在调试时显示为"4 12.12 "呢
#2
您理解错了这个函数的意义
void CString::TrimRight( TCHAR chTarget );
void CString::TrimRight( LPCTSTR lpszTargets );
CString str = "\n\t a";
str.TrimLeft();
str为“a”;
如果没有参数,从左删除字符(\n\t空格等),至到遇到一个非此类字符.
当然你也可以指定删除那些字符.
如果指定的参数是字符串,那么遇上其中的一个字符就删除.
——————
10.1 11.14 12.12
在处理"10.1 "
显然前面的 "10.1 11.1" 都在被删除之列
void CString::TrimRight( TCHAR chTarget );
void CString::TrimRight( LPCTSTR lpszTargets );
CString str = "\n\t a";
str.TrimLeft();
str为“a”;
如果没有参数,从左删除字符(\n\t空格等),至到遇到一个非此类字符.
当然你也可以指定删除那些字符.
如果指定的参数是字符串,那么遇上其中的一个字符就删除.
——————
10.1 11.14 12.12
在处理"10.1 "
显然前面的 "10.1 11.1" 都在被删除之列
#3
以下MSDN的原文
Call the version of this member function with no parameters to trim leading whitespace characters from the string. When used with no parameters, TrimLeft removes newline, space, and tab characters.
Use the versions of this function that accept parameters to remove a particular character or a particular group of characters from the beginning of a string.
Call the version of this member function with no parameters to trim leading whitespace characters from the string. When used with no parameters, TrimLeft removes newline, space, and tab characters.
Use the versions of this function that accept parameters to remove a particular character or a particular group of characters from the beginning of a string.
#4
嗯,是我理解错了,还以后是剪掉左边的字符呢,呵呵,闹笑话了~谢谢了