c++ - 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
。
我看了很长时间,但我仍然不知道为什么以及如何修复它。
解决方案
而不是cin >> input;
使用input = cin.get();
.
推荐阅读
- php - 在 null 上调用成员函数 get(),如何解决?
- batch-file - 尝试创建 .bat 文件以压缩网络驱动器上的报告
- c - Flex/Bison 解析器识别“(”与“(”不同)
- python - 如何在 Python 中创建多通道 .WAV 文件?
- android - 如何使用 Appium 为移动应用程序中的元素编写单选按钮的相对 xpath
- android - 有人可以通过某种方式操纵客户端应用程序来访问我的 Firestore 数据库吗?
- winforms - 在模块中找到 Azure Powershell 命令,但无法加载模块
- python - 如何计算从一个数据帧到另一个数据帧的单词?
- html - CSS-image gallery--第二行的神秘空白
- pip - 即使在使用 pip 安装后也出现“错误:找不到包”