[英]Pointer pointing to a string pointer array in C++
我有一個字符串的指針數組:
string *names = new string[numOfNames];
然后用文件中的值填充該數組。 我試圖按字母順序對名稱進行排序,所以我試圖將另一個指針數組分配給每個指向的元素名稱的地址。 所以我想做這樣的事情:
string *namesPtr = new string[numOfNames];
namesPtr[0] = &names[0];
但是我在等號上揮舞着紅色
沒有運算符“ =”與這些操作數匹配,操作數類型為std :: string = std :: string *
我有一個名稱的指針數組,因為numOfNames將在我要打開的文件中指定,並且據我所知,常規數組將不起作用,因為我必須指定數組中的元素數。
當然有類型不匹配。
namesPtr[0]
類型為string
。
&names[0]
類型為string*
。
您需要的是:
string** namesPtr = new string*[numOfNames];
namesPtr[0] = &names[0];
要完成指針分配,您需要:
for (int i = 0; i < numNames; ++i )
{
namesPtr[i] = &names[i];
}
namesPtr[0] = &names[0];
這是不正確的。 &將產生名稱中已取消引用的字符串的地址,因此您正在為非法的字符串分配地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.