生成随机 ipv4 地址时字符串数据类型错误

Data type error with strings when generating random ipv4 addresses

所以,我正在尝试创建一个生成随机 ipv4 地址的循环,它运行良好,只是我试图跳过本地主机环回地址“127.0.0.1”。我假设在 if (Output == "127.0.0.1") { 中比较 2 种不同的数据类型是一个问题。数据类型是我在编程中最薄弱的环节,我尝试了很多不同的方法来修复它,但都无济于事。这是到目前为止的代码:

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <cstdlib>
#include <ctime>
#define num 100
using namespace std;

void ipv4(string& createdAddress)
{
  int count = 0;
  time_t t;
  time(&t);
  srand(t);
  ostringstream Output;
  while(count < num) {
      for(int i = 0; i < 3; i++) {
        Output <<  rand() % 256;
        Output <<  ".";
      };
      Output <<  rand() % 256;
      Output << endl;
      if (Output == "127.0.0.1") {
        continue;
      } else {
        count++;
      }
    };
    createdAddress += Output.str();
};

int main()
{
  string createdAddress = "";
  ipv4(createdAddress);
  cout << createdAddress << endl;
  return 0;
};

这是我收到的错误代码:

   17 |   ostringstream 127.0.0.1;
      |                 ^~~~~~~~~
prog.cc: In function 'void ipv4(std::string&)':
prog.cc:17:17: error: expected unqualified-id before numeric constant
prog.cc:28:18: error: no match for 'operator==' (operand types are 'std::ostringstream' {aka 'std::__cxx11::basic_ostringstream<char>'} and 'const char [10]')
   28 |       if (Output == "127.0.0.1") {
      |           ~~~~~~ ^~ ~~~~~~~~~~~
      |           |         |
      |           |         const char [10]
      |           std::ostringstream {aka std::__cxx11::basic_ostringstream<char>}

另外,我是c++初学者,代码不好请大家批评指正,谢谢

您可能想要比较 Output.str()

附带说明一下,任何以 127. 开头的地址都是本地主机,因此您可能想要过滤所有这些地址;可能还有其他各种,比如 multicast