if() 跳过我的变量检查
if() skipping my variable check
我有以下代码:
std::vector<std::string> GetSameID(std::vector<string>& allFiles, int id) {
std::vector<std::string> returnVector;
for(std::vector<string>::iterator it = allFiles.begin(); it != allFiles.end(); ++it) {
if(GetID(*it) == id) {
int index = (*it).find("_CH2.raw");
if(index > 0) {
continue; //this works
}
if(0 < ((*it).find("_CH2.raw"))) {
continue; //this doesn't
}
string ext = PathFindExtension((*it).c_str());
if(ext == ".raw") {
returnVector.push_back(*it);
}
}
}
return returnVector;
}
我的问题是,为什么if(0 < ((*it).find("_CH2.raw")))
不是这样工作的?我的文件已命名ID_0_X_0_Y_128_CH1.rawID_0_X_0_Y_128_CH2.raw(示波器上通道 1 和通道 2 的不同 ID,X 和 Y)。
当我绕开很长时间(分配索引,然后检查索引)时,它可以工作,我不明白为什么易读性更强的 imo 的短版本不起作用。
根据
http://en.cppreference.com/w/cpp/string/basic_string/find,string::find()
返回一个size_t
- 这是一个无符号类型 - 所以它永远不会小于零。
当它找不到某些东西时,它会返回 string::npos
,这也是一个无符号类型,但是当你把它推到 int 中(隐式转换它)时,它变成了一个负值——这就是你的第一组代码工作的原因。
相关文章:
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 为什么我的变量存在于其范围之外
- 在我的变量打印C++后无法获得 $ 打印符号
- constexpr 函数在编译时获取值,即使我的变量不是 constexpr
- 为什么我的变量在我尚未将其设置为任何值时返回一个值?
- 乘以十进制的倍数,给我一个小十进制答案,以回馈我的变量
- 我的变量将值相互混合????C++
- C++:我的简单计算器程序无法打印出来。我也认为我的变量命名不正确
- 此CMAKE错误意味着什么?我的变量设置为未发现
- 为什么 std::cout 会更改我的变量?
- 为什么我的变量在单独的线程中修改时没有改变?C++/boost
- 为什么我的变量被强制初始化为 0,即使它不应该初始化?
- 第一个C 库:我不确定在哪里参考并声明我的变量
- C++ 我是否应该完全限定我的变量类型
- 为什么当我通过引用传递数组时,我会收到一个编译器错误,指出我的变量未定义
- 为什么我的变量从1到2,然后又回到1
- 为什么重命名我的变量会阻止segfault
- 为什么我的变量被重写了
- 我的变量不会有任何值
- 如何通过C++和C#中的键盘立即按下(不按enter)将用户的数据存储在我的变量中