while(cin.get() != ‘\n’); continue; 这个程序是怎么起到删除作用的
时间: 2024-09-12 07:11:51 浏览: 58
这段代码 `while(cin.get() != '\n'); continue;` 实际上并不起到删除作用,而是用来忽略输入流中直到换行符 `\n` 为止的所有字符,并且如果 `continue` 语句位于循环体内,它会结束当前的迭代并开始下一次的循环。这个代码段存在逻辑上的问题,因为分号 `;` 表示 `continue` 语句后面没有其他代码,所以 `continue` 不会执行任何操作。
如果想用 C++ 代码删除从当前位置到换行符的所有字符,可以使用以下代码段:
```cpp
while (cin.get() != '\n');
```
这段代码会一直读取输入直到遇到换行符,但是不会对输入流中的字符做任何处理,换行符之后的字符将会保留。然而,这并不会从输入流中“删除”字符,而是简单地跳过了它们。如果你想要实际从输入流中删除字符,这通常需要不同的方法,例如使用 `cin.ignore()` 函数来忽略一定数量的字符。
例如,要删除直到下一个换行符的所有字符,你可以这样做:
```cpp
cin.ignore(numeric_limits<streamsize>::max(), '\n');
```
这将会忽略直到下一个换行符之前的所有字符。`numeric_limits<streamsize>::max()` 表示忽略字符的最大数量,通常是输入缓冲区的大小。
相关问题
while(cin.get != ‘\n’); continue; 这个程序是怎么起到删除作用的
这段代码是用C++语言编写的,它的作用是读取输入直到遇到换行符('\n'),然后继续执行下一次循环,但实际上这段代码并不会起到删除作用。下面我将解释这段代码的工作原理以及它如何被用来删除输入中的字符。
代码段解释:
```cpp
while(cin.get != '\n')
continue;
```
- `cin.get` 是从标准输入(通常是键盘)读取下一个字符的函数。
- `while` 循环将一直执行,直到从输入中读取到换行符。
- `!= '\n'` 是一个条件表达式,判断读取的字符是否不等于换行符。
- 当 `cin.get` 读取到换行符时,条件 `cin.get != '\n'` 为假,循环结束。
- `continue` 语句用于跳过当前循环的剩余部分,并开始下一次循环迭代。在这个上下文中,它实际上没有作用,因为当条件失败时,循环已经自然结束。
这段代码如果要起到删除作用,它必须与其它逻辑结合。例如,如果你想删除所有换行符之前的所有字符,你可以使用下面的代码:
```cpp
while(cin.get() != '\n'); // 读取字符直到换行符,并忽略它们
```
上述代码中没有使用 `continue`,而是通过在 `while` 循环的条件中直接调用 `cin.get()` 来实现。它会持续读取并丢弃(忽略)所有输入直到换行符,从而实现删除换行符之前字符的目的。
如果需要更明确地“删除”字符,可以结合其他逻辑,如读取字符到缓冲区然后再清空缓冲区来实现。
#include<bits/stdc++.h> using namespace std; enum Token_value { NAME, NUMBER, END, PLUS = '+', MINUS = '-', MUL = '', DIV = '/', PRINT = ';', ASSIGN = '=', LP = '(', RP = ')' }; Token_value get_token(); double error(const string& s); double expr(bool get); double term(bool get); double prim(bool get); Token_value curr_tok = PRINT; double number_value; string string_value; map<string, double> table; int no_of_errors; int main() { table["pi"] = 3.1415926535897932385; table["e"] = 2.7182818284590452354; while (cin) { get_token(); if (curr_tok == END) break;// if (curr_tok == PRINT) continue;// cout << expr(false) << "\n"; } return no_of_errors; } Token_value get_token() { char ch = 0; // cin >> ch; do{ if(!cin.get(ch)) return curr_tok = END; }while (ch!='\n' && isspace(ch)); switch(ch){ case ':': case '\n': return curr_tok = PRINT; } 中rerm函数的作用
在给出的代码中,并没有提到term函数。但是,可以看出代码中定义了一些枚举变量,用于表示不同类型的token(标记)。在编写一个表达式求值程序时,通常需要将输入的表达式转化为一系列token,然后再对这些token进行解析和计算。get_token函数的作用就是读取输入流中的下一个字符,并将其转化为对应的token类型。在代码中,函数返回的是一个Token_value类型的枚举值,用来表示当前读取的token类型。这个函数会被expr、term和prim等函数调用,用来获取下一个token。
阅读全文
相关推荐














