在C++中分析字符串,使用char数据类型

Parsing strings in C++, using char data type

本文关键字:使用 char 数据类型 字符串 C++      更新时间:2023-10-16

我看过所有的解析示例,但它们都使用字符串或其他随机方法,无法解决我的问题。我的问题是,当我从文本文件中读取时,我提取的令牌会与令牌本身加上一堆随机的字母和符号一起出现。例如,文本文件中的一行读取。。。create_device digital_controller"左转向灯"51。。。并且我希望能够用我的指针数组*tklist[]指向每个令牌。然而,当我解析并指向时,我得到——。。。create_deviceý。。。同时以类似的方式获得彼此的代币。这是我提取令牌的代码。假设我的标记位置是正确的,因为我已经检查并再次检查了位置是否在它们应该在的位置,否则我只会得到我想要的单词的一部分包含在混乱的字符中。cline声明为"char-cline[]",是一行的字符数组

token_length = endTokenPosition - startTokenPosition;  //length of the token
tklist[next_token] = (char *)malloc(token_length + 1);  
memcpy(tklist[next_token], &cline[startTokenPosition], token_length + 1); 
cout << tklist[next_token] << endl;

在cstring的末尾需要一个null终止符。

您已经将令牌复制到tklist[next_token]中,但没有用null字符终止它,因此cout会继续到末尾。你可以试试:

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

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