-3

我希望把下面的代碼中的函數:(代碼是不完整的,但我認爲這應該是清楚的給你)字符* - 陣列作爲參數

char *parsedData[SEPERATOR]; 

for(int i=0; i<SEPERATOR; i++) 
{ 
    parsedData[i]=tmp; 
} 

的功能應該像如下:

int main() 
{ 
    char *parsedData[SEPERATOR]; 
    Parser(WTString, parsedData); 
} 
int Parser(char *WTString, *parsedData[SEPERATOR]) 
{ 
    for(int i=0; i<SEPERATOR; i++) 
    { 
     parsedData[i]=tmp; 
    } 
} 

代碼在一個函數中工作正常。通過將代碼分成兩個函數,我沒有得到可用的數據。

如果有人能幫助我,我將不勝感激。我不想使用更多的庫。

+2

什麼是'tmp'? – hmjd

回答

1

char *parsedData[SEPERATOR];爲什麼?

爲什麼你需要在C++中使用指向char的原始數組?

爲什麼你不使用一個std::vector<std::string>並讓自己免除一切痛苦和絕望。這樣做看起來像這樣的

0

A C++方式:

#include <string> 
#include <vector> 

std::vector<std::string> Parser(const char *WTString) 
{ 
    std::vector<std::string> result; 
    for(std::size_t i = 0; i != SEPERATOR; ++i) 
    { 
     result.push_back(tmp); // whatever tmp is 
    } 
    return result; 
} 

我不想使用圖書館的進一步。

別擔心,我的代碼示例只需要標準庫。

0

如果你不想使用STL,我提出這個功能:

int PointToDefault(char* target, char** parsedData, unsigned int count) 
{ 
    for (unsigned int i=0; i<count; i++) 
    { 
     parsedData[i] = target; 
    } 
} 

而且這次調用:

#define SEPERATOR 15 
int main() 
{ 
    char tmp[] = "default string"; 

    char *parsedData[SEPERATOR]; 
    PointToDefault(tmp, parsedData, SEPERATOR); 
} 
+0

它應該沒關係。如果計數是一個常數,傳遞它的意義是什麼? – newacct

+0

如果您需要使用它來處理兩個不同長度的字符串或在另一個程序中,則不必在函數中更改任何內容(如果是爲了工作,編輯後可能需要重新測試整個函數)證明它仍然在做它應該做的)。另外,遵循你的推理,你可以將字符串聲明爲全局的,在硬編碼的函數中引用它們,並省略所有參數,但是,如何將它提取到函數中呢? – SvenS

+0

重點是,這樣做對於問題詢問 – newacct