2013-09-30 81 views
-3

我試圖創建一個字符數組持有每個數組索引單個符號用下面的代碼:分號字符在C++字符數組

#ifndef TABLEDEFS_H 
#define TABLEDEFS_H 

#include <string> 
using namespace std; 

char symbolTable[] = {'_', '=', '<', '>', '!', '+', '-', '*', '/', '%', '.', 
'(', ')', ',', '{', '}', ';', '[', ']', ':'}; 

string tokenTable[] = {"IDtk", "NUMtk", "==", "=<=", "=>=", "=", "<", ">", "!", 
"+", "-", 
"*", "/", "%", ".", "(", ")", ",", "{", "}", ";", "[", "]", ":", "EOFtk"}; 

string keywordTable[] = {"Start", "Stop", "Then", "If", "Iff", "While", "Var", " 
Int", "Float", "Do", 
"Read", "Write", "Void", "Return", "Dummy", "Program"}; 
#endif 

然而,我的編譯器不斷抱怨有一個多餘的分號。我假設它正在讀取我的數組中的分號作爲終止字符,我不知道如何讓它停止這樣做。

我想保留它作爲字符數組而不是字符串(如果可以的話),因爲我將該數組用作我們在類中創建的編譯器的掃描器的一部分,並將比較單個字符在一種精巧的switch語句中針對數組的代碼。如何讓我的數組對編譯器不那麼沮喪?

+0

你發佈的內容對我來說看起來不錯 - 你確定這是整個數組嗎? –

+0

我們需要一個可編譯的例子來重現錯誤,編譯的小片段沒有錯誤。 –

+0

您對使用字符串的推理毫無意義。無論如何,你必須知道這個東西的大小,所以只需切斷NULL終止符。 – Adam

回答

0

問題不在於你認爲它的地方。以下程序編譯並運行得很好。

#include <stdio.h> 

int main(void) { 
    char symbolTable[] = {'_', '=', '<', '>', '!', '+', '-', '*', \ 
     '/', '%', '.', '(', ')',',', '{', '}', ';', '[', ']', ':'}; 
    printf("%c\n", symbolTable[3]); 
} 

我意識到我只使用C而不是C++,但在這種情況下應該不重要。

+0

你說得對。我發現了這個問題。謝謝。對於那個很抱歉。 – user2278604

+3

問題是什麼? –