【发布时间】:2013-12-05 09:43:21
【问题描述】:
在解析令牌时,我的所有令牌指针都变坏了,当我签入调试器时,它说无法评估表达式。 错误:CX0030:错误:无法评估表达式 并且令牌的值是 0x00000000
我在这里遗漏了一些东西,我尝试了很多但无法纠正它。我知道它与 const 等指针声明有关,但进行更改无济于事。
Windows + Visual Studio 2010 和正在解析的文件是 unicode UTF16
code sn-p ------
const wchar_t* const DELIMITER = L"\"";
wchar_t buf[MAX_CHARS_PER_LINE];
fin.getline(buf, MAX_CHARS_PER_LINE);
wchar_t* token[MAX_TOKENS_PER_LINE] = {};
token[0] = wcstok(buf, DELIMITER);
if (token[0]) // zero if line is blank
{
int n = 0;
for (n = 0; n < MAX_TOKENS_PER_LINE; n++)
{
token[n] = wcstok(0, DELIMITER); // subsequent tokens --> error ,pointer becomes bad
if (!token[n]) break; // no more tokens -------------> code does not go beyond this
buf 有整个文件(这是另一个问题,当我尝试读取行时它会在其中获取整个文件),有人可以帮我指出我在这里犯了什么错误吗?
【问题讨论】:
-
wchar_t* token = wcstok(buf, DELIMITER);
-
如果是C++,不推荐使用这个分词功能。
-
@Exceptyon ,我不明白你的意思,你的意思是我缺少声明吗?或者你的意思是我不应该将令牌用作数组?
-
@chris ,它的 C++ ,我有我的其余代码(C++ 中几乎 2k 行,所以现在不能更改它),你有任何我可以解决的替代函数吗?
标签: c++ c string pointers tokenize