Funktionsrückgabe eines Arrays



  • Hallo,

    ich habe ein kleines bis mittelgroßes Problem.

    Ich habe eine Funktion, die mir einen CString "zerstückelt". Das Ergebnis gebe ich im moment noch in eine Membervariable aus. Allerdings würde ich die Funktion gerne so aben, dass ich den Array als Rückgabewert habe, also ohne Membervariablen.

    Meine jetzige Funktion:

    void CiowampDlg::SplitString(CString string)
    {
    //CString sAmp[4] ist Membervariable
    	short count_fw;
    	short count_all;
    	short count_slice;
    	short count_track;
    	short count_title;
    
    		string.Replace(_T("Ä"), _T("Ae"));
    		string.Replace(_T("ä"), _T("ae"));
    
    		string.Replace(_T("Ö"), _T("Oe"));
    		string.Replace(_T("ö"), _T("oe"));
    
    		string.Replace(_T("Ü"), _T("Ue"));
    		string.Replace(_T("ü"), _T("ue"));
    
    	count_all = string.GetLength();
    	count_fw = string.Find(_T("-  -"));
    
    	count_track = string.Find(_T("."));
    	count_slice = count_all - 6;
    	count_title = count_all -(count_fw + 4) - 8;
    
    	sAmp[0].SetString(string.Mid(0, count_track));
    	sAmp[1].SetString(string.Mid(count_track + 2, count_fw - 3));
    	sAmp[2].SetString(string.Mid(count_fw + 4, count_title));
    }
    

    Ich nehm an, dass das über Zeiger / Referenzen läuft, aber damit komm ich nicht ganz klar. Hab mir schon den Artikel vorgenommen, aber so ganz schlau wurde ich nicht.



  • du könntest eine CStringList nehmen. damit würdest dir das herumwerken mit den zeigern ersparen.


  • Mod

    Übergib den CStringArray/CStringList als Referenz:

    void CiowampDlg::SplitString(CString string, CStringList &lst)
    {
    ...
    

    CStringList/CStringArray hat keinen Copy operator und lässt sich so nicht als Rückgabewert verwenden, anders std:list oder std::vector.


Anmelden zum Antworten