在C++中分析字符串,使用char数据类型
Parsing strings in C++, using char data type
我看过所有的解析示例,但它们都使用字符串或其他随机方法,无法解决我的问题。我的问题是,当我从文本文件中读取时,我提取的令牌会与令牌本身加上一堆随机的字母和符号一起出现。例如,文本文件中的一行读取。。。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] = ' ';
相关文章:
- 使用char类型将decimal转换为string,将string转换为decimal
- 使用 char 分隔符解析C++中的字符串,但将可重复的字符保留为每个解析的子字符串 (C++ STL) 中的分隔符
- 使用 char* 存储数据和产生的错误
- 我可以以相同的方式使用 char* c 和字符串吗?
- 使用 char 数组公钥的 OpenSSL 进行 RSA 加密
- 将字符串文本分配给字符*:const_cast<字符 *> 与使用 char 数组
- 为什么 fstream.read 和 fstream.write 使用 char 而不是无符号字符?
- 使用 char 将一个字符数组分配给另一个字符数组时出现奇怪的行为
- C :如何使用char / string 2D数组接受用户的1个以上的源性
- 带有字符串(使用char数组)参数的构造函数
- 在 C++ 中使用 char* 进行初始化
- 使用 Char 数组作为多种用途的通用变量
- 使用char*时,替换了不弃用的strcpy/strcat
- 仅使用char将八分音号码转换为十进制数字
- 当使用Char Array和= Operator启动字符串时,该功能被调用
- 使用 char* 将结构传递给 C# 中的 C++ dll 函数
- 使用 char*array 存储条形图的条形图,以便我可以动态制作它并作为字符串返回
- 使用char*作为undered_map的密钥不会识别重复的密钥
- 使用 char* 增加数组 [C++]
- 错误:使用 char C++ "uninitialsed local variable 'name' used" *