将C++转换成VB.NET
我有一个cpp代码,我需要在vb.net中有一个等价的,或者至少我不知道它在做什么,这样我就可以自己计算出一个转换将C++转换成VB.NET,c++,vb.net,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)
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)
多谢各位
strnchr -- Find a character in a length limited string
看。您可以在VB.net中使用String.IndexOf执行相同的操作,例如
从复制的示例。strnchr查找字符串str中第一次出现的字符c的位置。它返回一个指向该字符的指针,这在VB.Net中是无法做到的,您可以做的最接近的操作是获取该字符从字符串开头的偏移量
memcmpprevprev,ANY,3将ANY的三个字母与prev的内存位置进行比较,有效地检查prev是否包含ANY的子字符串
在VB.Net中,可以使用字符串类型的IndexOf成员来完成第一步。
第二个需要再次使用SubString作为字符串类型的成员来创建字符串的子字符串,并检查它是否等于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 '
使用MSDN查找许多标准C函数的VB.NET类似函数或密切对应的函数相对简单。以memcmp为例: -MSDN源-比较两个缓冲区中的字符。 -在VB.NET中查找字符串的比较方法- 但是,将C源函数一个接一个地复制到VB.NET中,对于相对较小的程序来说,可能会产生一个出奇的无效代码。每次寻找C程序中到处使用的原始指针的替代品时,您都会感到困惑
另外,如果::strnchr的调用与标准C函数不同,您会怎么做?在字符串中查找字符。您的代码是nativec++。VB.NET不是本机语言。在代码中使用.NET应用程序上不安全的指针。memcmp==prevprev.EqualsANYOr。在字符串的情况下进行比较。为什么不使用Google strnchr和memcmp?这应该能告诉你他们是怎么做的。谢谢你的回复。我可以问一下为什么投反对票吗?memcmp是字符串比较。您指的是memcpy.strnchr返回指向第一次出现的指针,因此实际上是一个子字符串。更准确的是:myString.SubstringmyString.indexofchhello,从您的示例中,myString.SubstringmyString.IndexOfc将返回DE,因为这是找到D的位置。这是C++的行为吗?
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 '