gpt4 book ai didi

c++ - C++ 中的标记及其使用方式

转载 作者:行者123 更新时间:2023-11-30 05:10:56 25 4
gpt4 key购买 nike

在 Bjarne Stroustrup 的《使用 C++ 编程原则和实践》一书中,他解释了如何使用标记来阻止 C++ 在简单计算器上自动使用运算顺序。他在书中给出的代码不起作用——要么是因为我的愚蠢,要么是因为我遗漏了什么。我知道 token 本质上是将代码行分解为字符。例如,如果我有 5 * 3,则有 3 个 token 。两个值和一个字符。我不知道如何合并 token ,或者我们为什么要使用它们。 Bjarne 的用户定义 token 示例是这样的:

class Token {
public:
char kind; // what kind of token
double value; // for numbers - a value
Token(char ch) // make a token from a char using a constructor
:kind(ch), value(0) {} // set kind to ch and value to val
Token(char ch, double val) // make a Token from a char and a double
:kind(ch), value(val) {}
};

此外,他还提供了这个示例,说明如何将输入读取到标记 vector 中:

Token get_token() {} // read a token from cin

vector<Token> tok; // put the tokens in this vector

while(cin >> t5) {
Token t5 = get_token();
tok.push_back(t5);
}
return 0;

首先... 1) 他制作了“get_token()”函数的原型(prototype),但他甚至没有为它编写任何代码。 2) Token 的对象't5'在while 循环中读取后被初始化。 3) 我已经尝试了很多方法让 cin 将输入读入 t5,但它不起作用。我什至在 while 循环之前定义了 t5,但我收到了“>>”的无效操作数错误。这是本书中我第一次完全陷入困境。我在网上找不到任何关于如何在 C++ 中使用标记来编写程序的示例,我只能得到关于标记是什么的模糊定义。如果有人可以帮助我理解 token ,或者可能为我提供一个好的来源,我可以获得详尽的解释,我们将不胜感激。

最佳答案

首先,Stroustrup 不是一位伟大的老师,如果您正在学习编程,最好建议您从 C++ 以外的地方开始,而不是他的书。

为了解决您的问题,标记是一个词法元素,而它究竟是什么取决于您要解决的问题。例如,如果您正在处理算术表达式:

100+2/3

那么标记将是“100”、“+”、“2”、“/”和“3”。另一方面,如果您正在处理英文文本:

"Here we go again"

那么 token 可能是:

"Here", "we", "go", "again"

我们简单地丢弃空格字符。

你如何“使用代币”?好吧,假设你想写一个拼写检查器——你需要将文本分解成单词和标点符号(不同类型的标记),可能会丢弃大部分标点符号,然后在某种字典中查找单词标记。

关于c++ - C++ 中的标记及其使用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com