2016-01-22 61 views
0

所以我想合併排序字符串的字母,以便他們是爲了。由於作業不需要,因此資本化並不重要。出於某種原因,我無法獲得templet[index] = split[leftfirst]。我得到一個「沒有合適的從std :: string到char存在的轉換函數」。這裏我的合併功能合併排序字符在一個std:字符串

void merge(string *split, int leftfirst, int leftlast, int rightfirst, int rightlast) 
{ 

string templet; 
int index = leftfirst; 
int savefirst = leftfirst; 

while ((leftfirst <= leftlast) && (rightfirst <= rightlast)) 
{ 
    if (split[leftfirst] < split[rightfirst]) 
    { 
     templet[index] = split[leftfirst]; 
     leftfirst++; 
    } 
    else 
    { 
     templet[index] = split[rightfirst]; 
     rightfirst++; 
    } 
    index++; 
} 
while (leftfirst <= leftlast) 
{ 
    templet[index] = split[leftfirst]; 
    leftfirst++; 
    index++; 
} 
while (rightfirst <= rightlast) 
{ 
    templet[index] = split[rightfirst]; 
    rightfirst++; 
    index++; 
} 
for (index = savefirst; index <= rightlast; index++) 
    split[index] = templet[index]; 

} 

任何幫助表示讚賞。

回答

1

split是一個string*,這意味着split[some]不會從字符串中獲取字符,它會從字符串數組中獲取字符串。

解決此問題的最簡單方法是將函數定義更改爲string &split,如果要修改該變量。

+0

非常感謝您的回答。我希望這可以幫助其他有類似問題的人 –