|
김영석 님이 쓰신 글 :
: String str = "ssss^sdfgfg^aaaaa";
:
:
: 문자열이 있으면 ^를 기준으로
: ssss
: sdfgfg
: aaaaa
:
: 이렇게 3개의 문자열을 얻고 싶습니다.
: VCL함수가 있을듯한데..
: 초보라 못찾겠네요.
:
: 읽어주셔서 감사합니다
제가 지금 쓰고 있는 스트링유틸 헤더 파일에 있는 함수를 공개해 드립니다.
다 비슷 비슷한데요, stl을 이용해서 구현한거랑,
C언어때 써먹었던 방법도 있습니다.
참고로만 하세요 ^^
#ifndef STRUTILITY_H
#define STRUTILITY_H
//---------------------------------------------------------------------------
#include <vcl.h>
#include <vector>
#include <string>
using namespace std;
//---------------------------------------------------------------------------
void StringSplit(AnsiString str, char delim, TStringList *& stl_Result)
{
AnsiString a_Temp;
stl_Result->Clear();
char * ptr = str.c_str();
while ( *ptr != NULL )
{
if ( *ptr != delim )
a_Temp += *ptr;
if ( *ptr == delim )
{
stl_Result->Add(a_Temp);
a_Temp = "";
}
ptr++;
}
stl_Result->Add(a_Temp);
}
//---------------------------------------------------------------------------
void StringSplit(string str, string delim, std::vector<string> results)
{
int cutAt;
while( (cutAt = str.find_first_of(delim)) != str.npos )
{
if(cutAt > 0)
{
results.push_back(str.substr(0,cutAt));
}
str = str.substr(cutAt+1);
}
if(str.length() > 0)
{
results.push_back(str);
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall GetParsingData(char szParser, AnsiString &strSource)
{
AnsiString strReturn = "";
int iPos = strSource.Pos(szParser);
if(iPos > 0)
{
strReturn = strSource.SubString(1, iPos-1);
strSource = strSource.SubString(iPos+1, strSource.Length());
}
else //마지막 문자로 처리...
{
strReturn = strSource;
strSource = "";
}
return strReturn;
}
//---------------------------------------------------------------------------
#endif
|