c++ - 无法使用 isdigit() 检测字符串中的数字
问题描述
该函数的任务是检查它是否包含除数字、空格或减号之外的任何符号。
bool MainWindow::inputExcp()
{
QString inputStr = ui->input->toPlainText();;
QByteArray ba = inputStr.toLocal8Bit();
char *myString = ba.data();
QString warn;
char space = ' ';
size_t size = sizeof(myString);
try{
for(unsigned long long i = 0; i < size; i++)
{
if (isdigit(*(myString+i)))
continue;
else if (*(myString+i) == space)
continue;
else if(*(myString+i) == '-')
continue;
else
throw *(myString+i);
}
}
catch (char x)
{
warn += ("Enter digits, spaces or minuses");
QMessageBox::warning(this, "Uncorrect input",warn);
return false;
}
return true;
}
我不明白为什么这个函数只对包含 8 个或更多元素的数组返回 true。这个问题的解决方案是什么?
解决方案
因为 sizeof() 函数不返回列表元素的数量,它返回为其分配的内存大小。
推荐阅读
- reactjs - JSX 从何而来?
- python - 我是否必须从 abc.ABC 继承才能使用 @abstractmethod 装饰器?
- java - 程序运行时数据库出错但编译完美
- xamarin.ios - 从 Xamarin.iOS 中的抽象类型类创建对象
- javascript - 如何将输入的数据从一个 html 文件移动到它的 ts 文件,然后再移动到另一个组件文件?
- xamarin - 如何将基于 MVVMCross 的 Xamarin.android 项目迁移到 Intune 托管项目中
- python - Django 2.2 | 自动重新加载不会检测到新应用的变化
- node.js - 在 NodeJS 中将 XML 转换为特定 XML 或 JSON 格式的最佳方法
- swift - 一个 Viewcontroller 中有两个 Tableview 的“索引超出范围”错误
- java - JavaFx:自动完成多选文本字段