c++ - while 函数中的无限循环

标签 c++

bool isDigital(char c) { return ('0' <= c && c <= '9'); }

void DigitalToken( char digitToken[50], char ch ) {
    digitToken[0] = ch;
    char input = '\0';
    cin >> input;
    int i = 0;
    while ( ( input != ' ' ) && ( input != '\t' ) && ( input != '\n' ) ) { // got a infinite loop
        i++;
        digitToken[i] = input;
        cin >> input;
    } // while ( input != ' ' && input != '\t' && input != '\n' )
    
} // DigitalToken()

int main() {
  char ch = '\0';
  while ( cin >> ch ) {
    if ( isDigital(ch) ) {
      char* digitToken = new char[50]();
      DigitalToken(digitToken, ch);
      cout << digitToken;
      delete[] digitToken;
    } // else if
  } // while
} // main()

我不明白为什么在 DitgitalToken 函数中出现无限循环。

当我输入123时,应该输出123

我看了很久,但还是不知道为什么以及如何解决。

最佳答案

而不是 cin >> input;使用input = cin.get(); .

关于c++ - while 函数中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66916353/

相关文章:

c++ - 以大写形式替换结构的每个成员

c++ - 如何获得正在运行的进程的启动时间?

c++ - 考虑leap年,向COledateTime添加年份的正确方法是什么?

c++ - 无法将 cmd 命令作为 TCHAR 传递

c++ - 如何使用另一个类的静态集初始化集...?

c++ - 可以优化智能指针吗?

C++ Perincrement未定义操作与C

c# - 如何将数组(在 VB6 中通过引用)传递给 C\C++ *.dll 子例程?

c++ - sqlite 错误 : compilation error C1017 SQLITE_ENABLE_COLUMN_METADATA

c++ - 如何将 Qt 表单类移动到另一个命名空间?