VB函数InStr()在C ++中等效

时间:2017-04-24 09:34:13

标签: c++ c++11 visual-c++

我正在将VB转换为C ++。我不知道如何将InStr()转换为C ++。 我已经管理了Left()但是C ++中没有InStr()。有人可以告诉我如何将InStr()转换为C ++。

Public Function CW_Name(ByVal alIndex As Long) As String
     If Not Fb_ValidIndex(alIndex) Then Exit Function
     '-->DT - 08/10/11 - SIT#47953 - Truncate string on Chr(0)
     Dim liMark As Integer
     liMark = InStr(1, CurrentMat.Description, Chr(0))
     If liMark Then
          CW_Name = Left(CurrentMat.Description, liMark - 1)
     Else
          CW_Name = CurrentMat.Description
     End If
     '<--DT - 08/10/11 - SIT#47953 - Truncate string on Chr(0)
End Function

先谢谢。

4 个答案:

答案 0 :(得分:1)

假设您使用的是CString,它有.Find()方法可以满足您的需求。

请注意,在VB中,字符串的索引从1开始,但在C ++中,MFC从0开始。如果CString.Find()失败,则返回-1

文档:CString::Find()

答案 1 :(得分:1)

int instr(string istring, string tofind){
    if (istring.find(tofind)!=istring.npos){
        return istring.find(tofind)+1;
    }else{
        return 0;
    }
}

答案 2 :(得分:0)

无需重新发明轮子... c ++有一个带有find方法的String对象,可以让你获得相同的行为。

以下是如何使用它,docu

  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';

答案 3 :(得分:0)

C ++的标准库具有带有不同重载的函数std :: string :: find,其中您可以使用所需的重载来搜索字符串和字符中的子字符串。

注意:如果是CString,你可以使用CString :: Find,重载几乎相似