我一直在試圖返回一個函數的字符串數組爲幾天無濟於事。當我搜索StackOverflow的時候,我發現擁有一個將被分配數組值的參數會更好。所以,這裏是我的代碼示例(不是實際的用法,而是我試圖使用該函數的模型)。如果代碼有點草率,我很抱歉。我一直在對它進行測試。分配字符串數組的分段錯誤
void splitOn(string message, string delim, string***toCh) {
string** rString = new string*;
string lArr[numberOf(message, delim)+1];
for(int index=0; index<numberOf(message, delim)+2; index++) {
lArr[index]=message.substr(0, message.find(delim)).c_str();
message = message.substr(message.find(delim)+1, message.length());
rString[index]=&lArr[index];
cout << "IN LOOP "<<*rString[index]<<endl;
}
rString[numberOf(message, string(delim))] = &message;
toCh=&rString;
}
int main(){
string***arr;
splitOn("fox.over.lazy.dog", ".", arr);
cout << **arr[0]<<endl;
注:
numberOf()將一個字符串分隔符(串),並返回多少次的分隔符的字符串內找到。
串是從的std :: string
lArr(循環內的本地陣列)和* RSTRING都給予正確的輸出。
雖然我想將數組賦值給一個參數,但學習如何返回一個數組更吸引我。
我可以用文件和getLine()一起破解這個,但我更願意學習如何正確地做到這一點。
你已經在使用'std :: string'。當你在它的時候去'std :: vector'。我也不確定你爲什麼有'*** ***'。 – chris 2012-07-27 23:41:56
如果你需要一個動態的字符串集合,那麼在一個合理的C++程序中不要使用'***'...使用'std :: vector'。 –
2012-07-27 23:44:04
@chris我會使用std :: vector,但我更願意使用數組,因爲我打算在C中重寫這個數據,並且想從根本上理解爲什麼這不起作用。 – 2012-07-27 23:45:01