【发布时间】:2014-04-30 09:54:33
【问题描述】:
我有一个简单的代码,我试图通过char* 并将其吐出成单独的单词。这是我的简单代码。
#include <iostream>
#include <stdio.h>
int main ()
{
char * string1 = "- This is a test string";
char * character_pointer;
std::cout << "Splitting stringinto tokens:" << string1 << std::endl;
character_pointer = strtok (string1," ");
while (character_pointer != NULL)
{
printf ("%s\n", character_pointer);
character_pointer = strtok (NULL, " ");
}
return 0;
}
我收到一个不允许我执行此操作的错误。
所以我的问题是,我如何通过并找到char* 中的每个单词。对于我正在处理的实际程序,我的一个库将一段词作为const char* 返回,我需要使用词干算法来词干每个词(我知道如何做到这一点,我只是不知道如何发送词干分析器的每个单词)。如果有人可以解决如何让示例代码工作,我将能够弄清楚。所有在线示例都使用char[] 代替string1 而不是char*,我不能这样做。
【问题讨论】:
-
不要使用
strtok。它被彻底破坏了,在 C++ 中,使用标准库中的算法有更好的解决方案。 -
这不是
C++,主要是C。 -
@DumbCoder 我从未使用过 C 并且正在尝试在 C++ 中使用它,所以如果我弄错了,我会道歉。詹姆斯有什么更好的方法来解决这个问题?
-
@JamesKanze,在 C++11 之前,如何使用 C++ 解决这个问题?我曾尝试替换 strtok 以进行标记化,但在没有性能受到影响的情况下始终无法这样做。我想 strtok 重新使用已经分配的字符串这一事实使它非常快。
-
为什么要这样混合C和C++?在 C 中使用 printf,在 C++ 中使用 cout