Tokenizer 只打印第一个标记

Tokenizer only prints the first token

我在构建分词器时遇到问题。我是 c++ 的新手,想知道是否有人可以提供帮助。

当我运行程序时,我输入用户输入为"x = a + 1"。当我这样做时,唯一的标记输出是 x。我要显示 "x\n = a\n +\n 1\n"

#include <iostream>
#include <string>
using namespace std;

int main(void)
{

 char *text = (char*)malloc ( 40 *sizeof( char ));
 cout << "Enter the first arrangement of data." << endl;
 cin >> text;
 char *token = strtok(text, " ");
 while ( token )
 {
     if ( strlen(token) > 0 )
     {
        printf(" %s", token);
     }
     token = strtok(NULL, " ");
 }
 return 0;
}

您没有阅读整个输入内容。

改变

cin >> text;

cin.getline(text, 40);