我的代碼張貼如下。我希望能夠使用分隔符「()」進行解析,並將字符串轉換爲cpp中的整數。我很困惑如何解析多個分隔符在C++中使用getline和strtok
while(getline(fin, line))
{
x = atoi((strtok(line.c_str(),'(,)'));
xx = atoi((strtok(NULL,"(),"));
xxx = atoi((strtok(NULL,"(),")));
cout << x << " " << xx << " " << xxx << "\n";
}
但由於某種原因,我得到以下錯誤
GraphTest.cpp:134:錯誤:從 '爲const char *' 到 '字符*'
GraphTest.cpp無效的轉換:134 :錯誤:初始化參數1'char * strtok(char *,const char *)'
.c_str應該將我的字符串轉換爲ac類型字符串,以允許我使用atoi和strtok函數。我很困惑,並會感謝任何幫助。
看起來像你有一個不平凡的語法。選擇合適的工具來進行分析和解析(例如:flex +野牛或助推精神,......)。 – 2014-12-02 12:37:33
''(,)''是錯誤的。它應該是'「(,)」'。 – 2014-12-02 12:37:34
'c_str()'返回一個'const char *',它應該是一個不可修改的指向字符串內部緩衝區的指針。 'strotok()'**修改**輸入字符串以執行標記化(這就是爲什麼它接受'char *'而不是'const char *'),那麼就不應該這樣做。 – 2014-12-02 12:39:36