#include <iostream>
#include <vector>
#include <fstream>
#include <sstream>
#include <cstring>
// Wi-Fiアクセスポイントの情報を格納する構造体
struct WiFiAccessPoint {
std::string ssid;
std::string mode;
std::string channel;
std::string signal;
std::string security;
};
// 文字列を指定のデリミタで分割するヘルパー関数
std::vector<std::string> splitString(const std::string& str, char delimiter) {
std::vector<std::string> tokens;
std::stringstream ss(str);
std::string token;
while (std::getline(ss, token, delimiter)) {
tokens.push_back(token);
}
return tokens;
}
int main() {
std::string command = "nmcli device wifi list > wifi_list.txt";
FILE* pipe = popen(command.c_str(), "r");
if (!pipe) {
std::cerr << "コマンドの実行に失敗しました。" << std::endl;
return 1;
}
pclose(pipe);
// ファイルを読み込んで構造体の配列に格納する
std::ifstream file("wifi_list.txt");
if (!file.is_open()) {
std::cerr << "ファイルの読み込みに失敗しました。" << std::endl;
return 1;
}
std::vector<WiFiAccessPoint> accessPoints;
std::string line;
std::getline(file, line); // ヘッダ行を読み飛ばす
while (std::getline(file, line)) {
std::vector<std::string> tokens = splitString(line, ' ');
if (tokens.size() >= 5) {
WiFiAccessPoint ap;
ap.ssid = tokens[0];
ap.mode = tokens[1];
ap.channel = tokens[2];
ap.signal = tokens[3];
ap.security = tokens[4];
accessPoints.push_back(ap);
}
}
// ファイルを閉じる
file.close();
// 構造体の配列の情報を使用する
for (const auto& ap : accessPoints) {
std::cout << "SSID: " << ap.ssid << std::endl;
std::cout << "モード: " << ap.mode << std::endl;
std::cout << "チャンネル: " << ap.channel << std::endl;
std::cout << "SIGNAL: " << ap.signal << std::endl;
std::cout << "セキュリティ:
}