Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C++转换成VB.NET_C++_Vb.net - Fatal编程技术网

将C++转换成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)

我有一个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)
多谢各位

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 '