我有这个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)
谢谢
答案 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() 不同 - “在字符串中查找字符。”会怎么做?