1

1000.1111.1111 から 1000.1131.1111 またはそれに類似した範囲の MAC アドレスの文字列ベクトルを作成する必要があります。

文字列をインクリメントする方法、または連結する場合に先行ゼロを維持する方法がわかりません。

任意のポインタをいただければ幸いです。

はい、これらは 16 進数です。ベース10のみを処理するソリューションは気にしませんが。

4

1 に答える 1

2

これにより、次のような文字列のベクトルが生成されます。

1000.1111.1111
1000.1111.1112
1000.1111.1113
<...>
1000.1112.1111
1000.1112.1112
<...>
1000.1131.1111

コード:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

//Converts a number (in this case, int) to a string
string convertInt(int number)
{
   stringstream ss;//create a stringstream
   ss << number;//add number to the stream
   return ss.str();//return a string with the contents of the stream
}

int main(int argc, char *argv[])
{
    //The result vector
    vector<string> result;
    string tmp;//The temporary item 
    for( int i = 1111; i < 1139; i++ )
        for( int j = 1111; j < 9999; j++ )
        {
            tmp = "1000.";//the base of the adress
            //Now we append the second and the third numbers.
            tmp.append( convertInt( i ) ).append( "." ).append( convertInt( j ) );
            //and add the tmp to the vector
            result.push_back(tmp);
        }
}
于 2012-07-17T07:36:10.343 に答える