C ++在向量中的向量中访问字符串

时间:2018-05-25 14:44:56

标签: c++ vector

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

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());

然后我得到错误:

  

错误:'class std :: vector,std :: allocator&gt;,   的std ::分配器,   std :: allocator&gt; &GT; &gt;'没有名为'c_str'的成员

有什么见解吗?

2 个答案:

答案 0 :(得分:6)

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

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;

答案 1 :(得分:3)

  • dbresult.data[0]:这是std::vector<std::string>*
  • *dbresult.data[0]:这是std::vector<std::string>
  • (*dbresult.data[0])[0]:这是std::string

你走了:

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

但问问自己:

  • 我确定要存储指向vector的指针吗?
  • 我确定我想要一个2D数组而不是一个漂亮的Matrix-like linearized array
  • AM我确定我想坚持使用类似C的函数(std::printf)而不是类型强大的C ++等价物(std::cout 等等。)?