生成随机 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
所以,我正在尝试创建一个生成随机 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