(タブスペース)文字CStringがあるときはいつでも、aを2つに分割しようとしています。"\t"これは私が使用しているコードです:
CString val = data->str;
CString valTok;
CString accTok;
int indx = 0;
valTok = val.Tokenize(_T("\t"), indx);
++indx;
accTok = val.Tokenize(_T("\t"), indx);
素晴らしいのですが、 の最初の文字accTokが抜けています。たとえば、いつval = "String1\tString2"、valTok = "String1"しかしaccTok ="tring2"...どうしてですか?
編集:
したがって、hvd のアドバイスに従って、indxインクリメントを削除し、次のコードを作成しました。
CString val = ((CItemData*)lpDrawItemStruct->itemData)->str; // Was this value causing the problem in the end
CString valTok;
CString accTok;
int indx = 0;
valTok = val.Tokenize(_T("\t"), indx);
accTok = val.Tokenize(_T("\t"), indx); // ASSERT(iStart >= 0) fails
しかし、今、何らかの理由で最初のTokenizeリターン.. !-1何か案は?
解決済み:
に渡された値に問題がありましたval:
((CItemData*)lpDrawItemStruct->itemData)->str
これは、場合によっては 2 回目のNULL呼び出し時にアサーションを引き起こすことがありTokenizeました。