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的问题啊
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 ;