主题:求救:代码
fang7253
[专家分:0] 发布于 2006-07-17 09:52:00
各位高手,有一c++buider问题请教,
字符串为AnsiString a (aaa*bbb155*df778.vd*fddsds*)
如何使一个listbox显示各项:aaa
bbb155
df778.vd
fddsds
有谁做过这样的程序呢?麻烦给些相似的代码??
回复列表 (共4个回复)
沙发
tianyuan001 [专家分:6740] 发布于 2006-07-17 15:26:00
给你写两个方法(被注释掉的是另一种方法):
#include <vcl.h>
#include <cstring>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnShow(TObject *Sender)
{
AnsiString a("aaa*bbb155*df778.vd*fddsds*");
char str[80];
char *istr= a.c_str();
size_t len=strlen(istr),i=0;
while(sscanf(istr+i,"%[^*]",str)){
this->ListBox1->Items->Add(str);
i+=strlen(str)+1;
if(i>=len) break;
}
/* istringstream istr(a.c_str());
while(1){
istr.getline(str,80,'*');
if(strlen(str)>0)
this->ListBox1->Items->Add(str);
else
break;
} */
}
//---------------------------------------------------------------------------
说来说去 ,BCB 还是 C++ 语言,C++ 的基本功不能丢.
没有坚实的 C/C++ 基础直接学 BCB 是不好的,很多数据处理需要 C/C++ 的基本功.
程序不就是处理数据么?
板凳
fang7253 [专家分:0] 发布于 2006-07-17 15:47:00
我现在的解决方法是这样的:
do
{
ListBox1->Items->Append(a.SubString(16,a.Pos("*")-16));
a=a.SubString(a.Pos("*")+1,a.Length());
} while( a.Pos("*")>0);
这样很简单吧?
3 楼
tianyuan001 [专家分:6740] 发布于 2006-07-17 18:11:00
老实说,我不喜欢 MFC 的 CString 和 VCL 的 AnsiString, TString , 通用性不好,
我宁愿走 标准 C/C++ 的道路.
4 楼
GangSH [专家分:110] 发布于 2006-08-02 14:08:00
最简单的办法:
TStringList* tList=new TStringList();
tList->Text=StringReplace(a,"*","\n");
这样, tList对象里就是那些分开以后的字符串了.
我来回复