c++ - 显示字符串子 vector C++

标签 c++ vector

我是 C++ 新手,我创建了一个名为 Device 的结构有两个字段

  • string MacAdress
  • vector<string> RSSI

然后,我创建了一个结构 vector :vector<Device> Devices

我想提取 vector<string> RSSI并显示其内容。

这是我卡在 main.cpp 中的地方:

cout << "display MAC and RSSI"<< endl;

Device CurrentDevice;
for(int j=0; j<Devices.size();j++)
{
    CurrentDevice = Devices.at(j);

    vector<string>::const_iterator begin = CurrentDevice.GetRSSIs().begin();
    vector<string>::const_iterator last = CurrentDevice.GetRSSIs().begin() + CurrentDevice.GetRSSIs().size();
    vector<string> intermed(begin+1, last);
    cout << "Size: "<< intermed.size() << endl;

    for (int i = 0 ;  i < intermed.size(); i++)
    {
        cout << intermed[i] << endl;

    cout << "device n°"<< j+1<<" " << "MAC "<< " "<< CurrentDevice.GetMacAdress()<< endl;

    for(int k=0; k<intermed.size();k++)
    {

        cout << "device n°" << j;
        cout << "\tRSSI " << k << " = " << intermed.at(k)<< endl;
    }

    }

    return 0;
}

我最终得到 Size=0

最佳答案

这里是一些不使用迭代器但仍然可以完成工作的简化代码:

#include <iostream>
#include <string>
#include <vector>

int main()
{

    struct Device {
        std::string MacAddress;
        std::vector<std::string> RSSI;

    };

    std::vector<Device> Devices;

    // add some stuff to first object
    Device CurrentDevice1;
    CurrentDevice1.MacAddress = "A-B-C";
    CurrentDevice1.RSSI.push_back("rssi11");
    CurrentDevice1.RSSI.push_back("rssi12");
    CurrentDevice1.RSSI.push_back("rssi13");

    Devices.push_back(CurrentDevice1);

    // add some stuff to second object
    Device CurrentDevice2;
    CurrentDevice2.MacAddress = "D-E-F";
    CurrentDevice2.RSSI.push_back("rssi21");
    CurrentDevice2.RSSI.push_back("rssi22");

    Devices.push_back(CurrentDevice2);


    // see object MAC's
    for (int i = 0; i < Devices.size(); i++){
        std::cout << "device " << i+1 << " MAC: " << Devices[i].MacAddress << std::endl;
    }

    // see object RSSI's
    for (int j = 0; j < Devices.size(); j++){
        for (int k = 0; k < Devices[j].RSSI.size(); k++){
            std::cout << "device " << j + 1 << " RSSI: " << k +1 << " : " << Devices[j].RSSI[k] << std::endl;
        }
        std::cout << "\n";
    }

    return 0;
}

关于c++ - 显示字符串子 vector C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918121/

相关文章:

c++ - 将元素插入排序 vector

c++ - 使用INT32_MAX时无法打印正确答案

c++ - 标志如何在 C 中工作?

python很难设置lambda函数

c++ - 我如何根据另一个预先排序的字符串 vector 来排序包含字符串的 vector ?

c++ - asio::buffer 类型用于发送 std::vector 和 std::string

c++ - 如何逐字符读取文件并通过 C++ 中的 array_name[index] 访问它

c++ - OpenCV 中 cv::Mat 的自定义类型

c++ - 我如何为 C++ Web 开发配置 lampp

c++ - 手动调用 OpenGL 函数