我想访问另一个向量中第一个条目内向量中第一个条目的字符串。我的代码:
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'的成员
有什么见解吗?
答案 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]
但问问自己:
std::printf
)而不是类型强大的C ++等价物(std::cout
等等。)?