String Find()用于查找小差异

时间:2016-11-18 04:44:55

标签: c++ string find

我有一些SKU需要通过字母数字代码来区分,例如D2 D3 D4等

我使用简单的if(lineVector [1] .find(“D2”))

但是当我使用多个语句执行此操作时,它似乎属于第一个if而且从不更改。我的问题是,发现是否正在看到D并决定它不需要过去,因为它找到了它。

任何建议

简言之,我的代码是

if (lineVector[7].find("D2"))
            {
                tempQuantity = 2;
                totalQuantity += tempQuantity;
            }

            else if (lineVector[7].find("D3"))
            {
                tempQuantity = 3;
                totalQuantity += tempQuantity;
            }

            else if (lineVector[7].find("D4"))
            {
                tempQuantity = 4;
                totalQuantity += tempQuantity;
            }

            else if (lineVector[7].find("D5"))
            {
                tempQuantity = 5;
                totalQuantity += tempQuantity;
            }
            else
            {
                tempQuantity = 1;
                totalQuantity += tempQuantity;
            }

1 个答案:

答案 0 :(得分:0)

// string::find
#include <iostream>       // std::cout
#include <string>         // std::string
using namespace std;

int main ()
{
  std::string str ("There are two needles in this haystack with needles.");
  std::string str2 ("needle");

  // different member versions of find in the same order as above:
  std::size_t found = str.find(str2);
  if (found!=std::string::npos)
    std::cout << "first 'needle' found at: " << found << '\n';

  return 0;
}

find函数返回成功匹配的索引。如果失败(未找到),则返回std :: string :: npos,其值不为零。

所以你必须将返回值与std :: string :: npos进行比较。

如果你有独特的skus使用集(如果需要排序顺序)或unordered_set(顺序无关紧要),我建议你。