将c ++转换为vb.net

时间:2012-04-24 14:27:37

标签: c++ vb.net

我有这个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)

谢谢

3 个答案:

答案 0 :(得分:2)

strnchr --  Find a character in a length limited string

this。您可以使用String.IndexOf在VB.net中执行相同的操作,例如

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

MSDN复制的示例。

答案 1 :(得分:1)

strnchr在字符串c中找到第一次出现char 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 '

答案 2 :(得分:0)

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

P.S。如果您的 :: strnchr 将被调用与标准C函数strnchr() 不同 - “在字符串中查找字符。”会怎么做?