2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

文字列を特定の区切り文字で分割して、CStringArrayの要素に格納する (CSVカンマ区切り) MFC

Last updated at Posted at 2017-01-04

文字列を特定の区切り文字で分割して、CStringArrayの要素に格納する(CSVカンマ区切り) MFC

タイトルが分かり難いな。。。
CSVカンマ区切りの文字列を分割してCStringArrayに格納したい事が良くあると思います。

そんな時の為に、私は、以下のような関数を利用しています。
もっと効率的な処理があると思いますが、わかりやすさ重視でこんな感じで書いています。


//CString文字列を区切り文字を指定して、CStringArrayに分割する
void Split(CStringArray* pstrArray,LPCTSTR szTarget,LPCTSTR szDelimiter)
{
	if(!szTarget)
		return;
	if(!szDelimiter)
		return;
	if(!pstrArray)
		return;

	pstrArray->RemoveAll();

	CString strTarget(szTarget);
	size_t intDelimiterLen=0;
	size_t intStart=0;
	int intEnd=0;

	strTarget += szDelimiter;
	intDelimiterLen = _tcslen(szDelimiter);
	intStart = 0;
	while (intEnd = strTarget.Find(szDelimiter, intStart), intEnd >= 0)
	{
		pstrArray->Add(strTarget.Mid(intStart, intEnd - intStart));
		intStart = intEnd + intDelimiterLen;
	}
	return;
}

////使い方
CStringArray strArray;
CString strLineData;

Split(&strArray,_T("あ,い,う,え,お"),_T(","));
int iMaxCol=strArray.GetSize();
for(int iIndex=0;iIndex<iMaxCol;iIndex++)
{
	strLineData=strArray.GetAt(iIndex);
	//何かの処理。
	//
	//
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?