我正在将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
先谢谢。
答案 0 :(得分:1)
假设您使用的是CString
,它有.Find()
方法可以满足您的需求。
请注意,在VB中,字符串的索引从1开始,但在C ++中,MFC从0开始。如果CString.Find()
失败,则返回-1
答案 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,重载几乎相似