首页 > 解决方案 > while 函数中的无限循环

问题描述

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

我看了很长时间,但我仍然不知道为什么以及如何修复它。

标签: c++

解决方案


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


推荐阅读