【问题标题】:C++ Accessing a string in a vector in a vectorC ++在向量中访问向量中的字符串
【发布时间】:2018-11-05 00:09:48
【问题描述】:

我想在另一个向量的第一个条目内访问向量的第一个条目中的字符串。我的代码:

typedef std::vector<std::string> DatabaseRow;
std::vector<DatabaseRow*> data;

//getting data from database 
//(dont need this for this example)

//then print first entry out
printf("%s.\n",dbresult.data[0][0].c_str());

然后我得到错误:

错误:'类 std::vector, std::allocator >, 标准::分配器, std::allocator > > >' 没有名为'c_str'的成员

有什么见解吗?

【问题讨论】:

    标签: c++ vector


    【解决方案1】:

    您正在存储指向数据库的指针:

    std::vector<DatabaseRow*> data;
                           ^ Pointer
    

    所以你必须像这样访问它:

    (*dbresult.data[0])[0].c_str()
    
    1. (*dbresult.data[0])  // Dereference the pointer
    2. [0]                  // Access the internal Vector   
    3. .c_str()             // Use the string
    

    或者,做更好的事情,不要让它成为一个指针,按照它应该的方式将它用作一个实际的对象:

     std::vector<DatabaseRow> data;
    

    【讨论】:

    • 非常感谢!您的解决方案运行良好!我同意不让它成为指针,但我正在处理我无法更改的现有代码库。
    【解决方案2】:
    • dbresult.data[0]:这是std::vector&lt;std::string&gt;*
    • *dbresult.data[0]:这是std::vector&lt;std::string&gt;
    • (*dbresult.data[0])[0]:这是std::string

    给你:

    (*dbresult.data[0])[0]
    

    但是问问自己:

    • 我确定要存储指向向量的指针吗?
    • 我确定我想要一个二维数组而不是一个漂亮的Matrix-like linearized array
    • 我确定要坚持使用类似 C 的函数 (std::printf) 而不是类型强的 C++ 等效函数 (std::cout )?

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2021-12-28
      • 2011-06-28
      相关资源
      最近更新 更多