-3

我有这个 cpp 代码,我需要 vb.net 中的等效代码,或者至少知道它在做什么,这样我就可以自己找出转换

const char * CResult::strnchr(const char *str, int len, char c) const
{
if (!str)
    return NULL;

const char *p = str;
while (len > 0)
{
    if (!*p)
        return NULL;
    if (*p == c)
        return p;
    p++;
    len--;
}
return NULL;
}

和这个

memcmp(prevprev, "ANY", 3)

谢谢你

4

3 回答 3

2
strnchr --  Find a character in a length limited string

看到这个。您可以在 VB.net 中使用String.IndexOf,例如

Dim myString As String = "ABCDE"
Dim myInteger As Integer
myInteger = myString.IndexOf("D")  ' myInteger = 3

从MSDN复制的示例。

于 2012-04-24T14:30:44.767 回答
1

strnchr查找 charc在 string中第一次出现的位置str。它返回一个指向字符的指针,这在 VB.Net 中是无法做到的,最接近的方法是从字符串的开头获取字符的偏移量。

memcmp(prevprev, "ANY", 3)将“ANY”的三个字母与 的内存位置进行比较prevprev,有效地检查 prevprev 是否​​包含 ANY 的子字符串。

在 VB.Net 中,第一个可以用类型的IndexOf成员来完成String。您需要使用的第二个SubString (再次是String类型上的成员)创建字符串的子字符串并检查它是否等于“ANY”。

Dim myString As String = "Any Hello World"
Dim AnyAtStart As Boolean = myString.SubString(0, 3) = "ANY")  ' Will be true '
Dim AnyAtSecond As Boolean = myString.SubString(1, 3) = "ANY")  ' Will be false '
于 2012-04-24T14:34:21.243 回答
0

使用 MSDN 为许多标准 C 函数查找 VB.NET 类似物或密切对应的函数相对简单。以 memcmp() 为例: - MSDN source memcmp, wmemcmp - “比较两个缓冲区中的字符”。- 在 VB.NET 中查找字符串的比较方法 - String.Compare 方法 (String, String) 但是将 C 源函数逐个函数复制到 VB.NET 中对于相对较小的程序会产生奇怪的无效代码。每次寻找替换 C 程序中随处使用的原始指针时,您都会感到困惑。

PS 如果你的::strnchr的调用方式与标准 C 函数strnchr()不同- “在字符串中查找字符”,你会怎么做?

于 2012-04-24T15:03:51.310 回答