Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
斯特托克实际上是如何理解每一个单词的? 我在C++中有一个问题,要求我用单词拆分一个短语并把每一个单词都显示在一行中。_C++_Arrays_Pointers_Char - Fatal编程技术网

斯特托克实际上是如何理解每一个单词的? 我在C++中有一个问题,要求我用单词拆分一个短语并把每一个单词都显示在一行中。

斯特托克实际上是如何理解每一个单词的? 我在C++中有一个问题,要求我用单词拆分一个短语并把每一个单词都显示在一行中。,c++,arrays,pointers,char,C++,Arrays,Pointers,Char,短语取自文件短语中的并放入字符向量phrs[256] 现在,问题是: p = strtok(aux, " "); while(p) { p = strtok(NULL, " "); cout << p; } 如何使程序显示第一个单词?在代码中,第一个strtok调用返回一个指向字符串开头的指针,字符串“RAM”位于该位置。下一个调用使p指向下一个单词,跳过“RAM” 要解决此问题,只需在while-循环中交换两行即可: while(p) { cout &l

短语取自文件
短语中的
并放入字符向量
phrs[256]

现在,问题是:

p = strtok(aux, " ");

while(p)
{
    p = strtok(NULL, " ");
    cout << p;
}

如何使程序显示第一个单词?

在代码中,第一个
strtok
调用返回一个指向字符串开头的指针,字符串
“RAM”
位于该位置。下一个调用使
p
指向下一个单词,跳过
“RAM”

要解决此问题,只需在
while
-循环中交换两行即可:

while(p)
{
    cout << p;
    p = strtok(NULL, " ");
}
while(p)
{

是的,我从phrs[256]复制到aux[256]为了保持原来的措辞,这看起来像是家庭作业,所以使用
strtok
可能是可以的,但一般来说,你最好在生产代码中避免使用它。这不是线程安全函数。不要使用
strtok
。将你的字符向量转换为
std::string
,然后对其进行标记。非常感谢。我在这方面还是个新手C++,所以我仍然需要了解这些。我会记住这个:“蘑菇”,唯一要记住的是你应该阅读你使用的API文档。@蘑菇如果你的问题已经被回答,请接受最佳答案来奖励创建者并把问题标记为解决。
while(p)
{
    cout << p;
    p = strtok(NULL, " ");
}