2012-02-13 56 views
1

我已經看過所有解析示例,但它們都使用字符串或其他隨機方法不能解決我的問題。 我的問題是,當我從文本文件中讀取時,我提取的令牌與令牌本身以及一堆隨機字母和符號一起出來。例如,文本文件中的一行代碼爲 ... create_device digital_controller「Left Turn Lamp」51 ... 我希望能夠用指針數組* tklist []指向每個標記。 但是,當我解析和指向時,我得到 - ... create_deviceýýý««««««þîþîþîþ ... 一起獲取對方的令牌以類似的方式。 這是我提取令牌的代碼。 假設我的代幣位置是正確的,因爲我已經檢查並重複檢查了位置是他們應該在的位置,否則我只會得到我想包含在字符混亂中的字的一部分。 克萊因被聲明爲「字符克萊恩[]」,然後是一個字符的行用C++解析字符串,使用char數據類型

​​
+3

哪裏是你的NUL終結者? – 2012-02-13 00:25:16

回答

5

您在您的CString的結束需要一個空終止數組。

1

您已經將令牌複製到tklist[next_token]中,但尚未用空字符終止它,因此cout繼續過去。您可以嘗試兩種:

memset(tklist[next_token], '\0', token_length + 1); 
memcpy(tklist[next_token], &cline[startTokenPosition], token_length); 

memcpy(tklist[next_token], &cline[startTokenPosition], token_length); 
tklist[text_token][token_length] = '\0';