0

@pmr : 以下のコードを見てください

@singeroftheall : 私は両方の問題を抱えています。挿入と検索。検索部分は終わったと思います。mac アドレスをベクトルに挿入するにはどうすればよいですか? 私のアドレスは変数 m_device_info.Adress.rgBytes[]; に保存されます。下記参照。

    wprintf(L"\t\tAddress: %02x:%02x:%02x:%02x:%02x:%02x\r\n", m_device_info.Address.rgBytes[0], m_device_info.Address.rgBytes[1], m_device_info.Address.rgBytes[2], m_device_info.Address.rgBytes[3], m_device_info.Address.rgBytes[4], m_device_info.Address.rgBytes[5]);

C言語とC++言語を混在させることは可能ですか? ベクトル出力が c++ にある原因は?

================================================== =============================== 利用可能なすべての Bluetooth デバイスを表示するコードを書きました。wchar使用可能なデバイスのすべての MAC アドレス (タイプ: ) をベクトル リストに保存したいだけです。その後wchar、ベクトルリストにある場合、指定された を検索したいと思います。

私は c/c++ のプロ プログラマーではなく、デモンストレーションのために物事を比較し、私のアイデアが機能しているかどうかを確認するためにこれが必要です。誰かが私を助けることができれば、私はとても嬉しくて幸せです. 私もグーグルを検索し、他のよくある質問に書きましたが、私を助ける良い解決策が見つかりませんでした.

デバイスを検索するためのコード:

#include "stdafx.h"
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <bthdef.h>
#include <BluetoothAPIs.h>
#include <iostream>
#include <vector>

using namespace std;
#pragma comment(lib, "Irprops.lib")

BLUETOOTH_FIND_RADIO_PARAMS m_bt_find_radio = {
    sizeof(BLUETOOTH_FIND_RADIO_PARAMS)
};

BLUETOOTH_RADIO_INFO m_bt_info = {
    sizeof(BLUETOOTH_RADIO_INFO),
    0
};

BLUETOOTH_DEVICE_SEARCH_PARAMS m_search_params = {
    sizeof(BLUETOOTH_DEVICE_SEARCH_PARAMS),
    1,
    0,
    1,
    1,
    1,
    15,
    NULL
};

BLUETOOTH_DEVICE_INFO m_device_info = {
    sizeof(BLUETOOTH_DEVICE_INFO),
    0
};

HANDLE m_radio = NULL;
HBLUETOOTH_RADIO_FIND m_bt = NULL;
HBLUETOOTH_DEVICE_FIND m_bt_dev = NULL;

int wmain(int argc, wchar_t **args) {
    while(true) {
        m_bt = BluetoothFindFirstRadio(&m_bt_find_radio, &m_radio);
        int m_radio_id = 0;
        do {
            m_radio_id++;

            BluetoothGetRadioInfo(m_radio, &m_bt_info);

            wprintf(L"Radio %d:\r\n", m_radio_id);
            wprintf(L"\tName: %s\r\n", m_bt_info.szName);
            wprintf(L"\tAddress: %02x:%02x:%02x:%02x:%02x:%02x\r\n", m_bt_info.address.rgBytes[1], m_bt_info.address.rgBytes[0], m_bt_info.address.rgBytes[2], m_bt_info.address.rgBytes[3], m_bt_info.address.rgBytes[4], m_bt_info.address.rgBytes[5]);
            wprintf(L"\tClass: 0x%08x\r\n", m_bt_info.ulClassofDevice);
            wprintf(L"\tManufacturer: 0x%04x\r\n", m_bt_info.manufacturer);

            m_search_params.hRadio = m_radio;

            ::ZeroMemory(&m_device_info, sizeof(BLUETOOTH_DEVICE_INFO));
            m_device_info.dwSize = sizeof(BLUETOOTH_DEVICE_INFO);

            m_bt_dev = BluetoothFindFirstDevice(&m_search_params, &m_device_info);

            vector <string> macadresse;
            int n;
            int m_device_id = 0;
            do {
                m_device_id++;
                wprintf(L"\tDevice %d:\r\n", m_device_id);
                wprintf(L"\t\tName: %s\r\n", m_device_info.szName);
                wprintf(L"\t\tAddress: %02x:%02x:%02x:%02x:%02x:%02x\r\n", m_device_info.Address.rgBytes[0], m_device_info.Address.rgBytes[1], m_device_info.Address.rgBytes[2], m_device_info.Address.rgBytes[3], m_device_info.Address.rgBytes[4], m_device_info.Address.rgBytes[5]);
                wprintf(L"\t\tClass: 0x%08x\r\n", m_device_info.ulClassofDevice);

                //devicemc[m_device_id]= m_device_info.Address.rgBytes[0], m_device_info.Address.rgBytes[1], m_device_info.Address.rgBytes[2], m_device_info.Address.rgBytes[3], m_device_info.Address.rgBytes[4], m_device_info.Address.rgBytes[5];
                //macadresse.push_back(string (&m_device_info.Address.rgBytes[0], &m_device_info.Address.rgBytes[1], &m_device_info.Address.rgBytes[2], &m_device_info.Address.rgBytes[3], &m_device_info.Address.rgBytes[4], &m_device_info.Address.rgBytes[5]));

            } while(BluetoothFindNextDevice(m_bt_dev, &m_device_info));
            BluetoothFindDeviceClose(m_bt_dev);

        } while(BluetoothFindNextRadio(&m_bt_find_radio, &m_radio));
        BluetoothFindRadioClose(m_bt);
        Sleep(10000);
    }
    return 0;
}
4

1 に答える 1

0

まず最初に: a の文字はstringではwcharなくcharです。おそらく が必要ですvector<wstring>。でいくつかを検索するwstringにはvector:

#include <algorithm>
#include <vector>
#include <string>
using namespace std;

vector<wstring> vec;
// insert something
vec.push_back(wstring("my_string"));

// search something
vector<wstring>::iterator it = std::find(vec.begin(), vec.end(), wstring("needle"));
if(it != vec.end()) {
  cout << "Found it" << '\n';
} else {
  cout << "Not found" << '\n';
}
于 2012-07-27T09:34:11.343 に答える