【发布时间】:2017-05-13 11:09:13
【问题描述】:
我是 C++ 的新手,我的问题是我找到了一种在输出中使用 printf 进行文本格式化的方法,但我找不到在字符串变量中正确格式化文本的方法。我的最终目标是将当前的 mac 地址保存在一个字符串变量中,并将其与另一个变量进行比较。
这是我的代码:
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <iostream>
int main()
{
struct ifreq s;
int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
char mac[6];
int ret;
strcpy(s.ifr_name, "enp5s0");
if (0 == ioctl(fd, SIOCGIFHWADDR, &s)) {
printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
(unsigned char) s.ifr_hwaddr.sa_data[0],
(unsigned char) s.ifr_hwaddr.sa_data[1],
(unsigned char) s.ifr_hwaddr.sa_data[2],
(unsigned char) s.ifr_hwaddr.sa_data[3],
(unsigned char) s.ifr_hwaddr.sa_data[4],
(unsigned char) s.ifr_hwaddr.sa_data[5]);
if (mac_as_string == "28:d2:44:55:97:7f") {
}
return 0;
}
return 1;
}
我找不到将 mac 地址保存为 mac_as_string 变量中的字符串的方法。
【问题讨论】:
-
" 我的最终目标是将当前的 mac 地址保存在一个字符串变量中,并与另一个变量进行比较。" 好吧,你可以使用
std::ostringstream并服从我的命令'已经说过here。 -
有什么理由不使用
std::array?那么你就不必使用字符串了,因为它已经定义了等于运算符。 -
@Jonas 这个主意不错。
-
@jonas 我是 C++ 的新手,所以我使用了我找到的示例代码来获取 mac 地址,现在我在将结果保存在字符串变量中时遇到了问题。
-
@nim4n 如果您想要创建字符串的示例代码,我可以写一个答案。不过,如果只是比较,@Jonas 提出的是更好的主意。您可以改进您的问题,以扩展您想要实际比较的位置和内容。
标签: c++ text-formatting unsigned-char