-3

私はvb.netで同等のものが必要なこのcppコードを持っているか、少なくともそれが何をしているのかを知っているので、自分で変換を理解することができます

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

これを参照してください。String.IndexOfたとえば、VB.netで同じことを行うことができます。

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

MSDNからコピーされた例。

于 2012-04-24T14:30:44.767 に答える
1

strnchrc文字列内で最初に出現するcharの場所を検索しますstr。これは、VB.Netでは実行できない文字へのポインターを返します。実行できる最も近い方法は、文字列の先頭から文字のオフセットを取得することです。

memcmp(prevprev, "ANY", 3)「ANY」の3文字をのメモリ位置と比較し、prevprevprevprevにANYの部分文字列が含まれていることを効果的にチェックします。

IndexOfVB.Netでは、最初のタイプのメンバーを使用して最初の方法を実行できますStringSubString 文字列のサブ文字列を作成するために(再びタイプのメンバーとして)使用する必要がある2番目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

多くの標準C関数のVB.NETアナログまたは密接に対応する関数を見つけることは、MSDNを使用すると比較的簡単です。例としてmemcmp()を取り上げます。-MSDNソースmemcmp、wmemcmp-「2つのバッファ内の文字を比較します。」--VB.NETで文字列の比較メソッドを検索します--String.Compareメソッド(String、String) しかし、関数ごとにCソース関数をVB.NETにコピーすると、比較的小さなプログラムでは奇妙に効果のないコードが生成される可能性があります。そして、Cプログラムの至る所で使用されている生のポインターの置き換えを探すたびに戸惑うでしょう。

PSそして、 :: strnchrが標準のC関数strnchr()とは異なる方法で呼び出される場合はどうしますか?「文字列内の文字を検索してください。」

于 2012-04-24T15:03:51.310 に答える