首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++ BUDER 利用sbustring去换行符的有关问题

2012-08-17 
C++ BUDER 利用sbustring去换行符的问题String s12Edit1 -TextString s11Memo1 -Textm1int p0,q

C++ BUDER 利用sbustring去换行符的问题
String s12 = Edit1 -> Text;

  String s11 = Memo1 -> Text;

  m=1;

  int p=0,q=0;

  for(;m<s11.Length();m++)
  {
  if(s11.SubString(m,1)==" ")
  {
  q=p;

  p=m;

  AnsiString Test_jiafa = s11.SubString(q+1,p-q-1);

  matrix_jiafa[matrix_line_jiafa][matrix_column_jiafa] = StrToFloat( Test_jiafa );

  matrix_column_jiafa++;

  }

  if(s11.SubString(m,1)=="\n")
  {
  q=p;

  p=m;

  AnsiString Test_jiafa = s11.SubString(q+1,p-q-1);//此处有问题

  matrix_jiafa[matrix_line_jiafa][matrix_column_jiafa] = StrToFloat( Test_jiafa );

  p=p+1 ;

  m++;

  matrix_column_jiafa++;

  matrix_line_jiafa++;

  }

  }


我做的这个就是从TMemo中取出来一组矩阵

1 2 3
4 5 6
7 8 9
然后 根据空格和回车判断矩阵的行数和列数
但是处理回车符出现了问题。
AnsiString Test_jiafa = s11.SubString(q+1,p-q-1);//此处有问题
这一段中,当s11.SubString(q+1,p-q-1)时,提示说
"3
"不是一个有效浮点数,我判断这里的 3 后面有个回车符,所以改为s11.SubString(q+1,p-q-2),但是此时提示说
""不是有效浮点数,难道说这里的3\n占一个字符吗?为什么减1以后不仅去掉了/n还去掉了3...
求大侠帮助!!

[解决办法]
一般回车是\r\n吧。
循环用Memo1->Lines->Strings[]来取memo里的每一行吧
[解决办法]
StrToFloat()必须是float的字符串,不能包含其他字符,否则会出现例外
你这里可以会成C函数 float atof(char *ch);
char ch[]="123 456 abc";
float ff=atof(ch); //ff=123,遇到其他字符时自动截断,也没有例外,呵呵
[解决办法]
多么easy的问题啊

C/C++ code
    int cols,rows;    rows =  Memo1->Lines->Count ;    TStringList * pList = new TStringList () ;    pList->Delimiter = " " ;    for(int i = 0; i < Memo1->Lines->Count; i++)    {        pList->Clear() ;        pList->DelimitedText = Memo1->Lines->Strings[i] ;        cols = pList->Count ;        //以下代码为赋值到数组里    }    delete  pList ; 

热点排行