通过引用获取内容

时间:2011-05-31 04:39:12

标签: c++ gtk glib

我有一个字符串对象的引用如何从中获取数据。这是我的样本:

string key = "key1";
gpointer somepointer;

GHashTable* myTable;
g_hash_table_insert(myTable,&key1,somepointer);         

GList *keysList = g_hash_table_get_keys(myTable);// here i got keys previously set
keysList = g_list_first(keysList);
string recentKey = (keysList->data);

数据是指字符串的引用。如何从参考

中检索数据

3 个答案:

答案 0 :(得分:1)

如果数据是对字符串的引用,那么

keysList->数据返回字符串。

#include<iostream>
#include <cstring>
#include <string>

using namespace std;

int main()
{
    string MyString("ABCD");
    string &MyString2 = MyString;
    char * cstr;

    cout<<"\n"<<MyString;
    cout<<"\n"<<MyString2;

    cstr = new char [MyString.size()+1];
    strcpy (cstr, MyString.c_str());

    cout<<"\n"<<cstr;
    delete[] cstr; 

    return 0;
}

答案 1 :(得分:1)

如果keysList->datagpointervoid*),我猜有些人就像是string recentKey = *(string*)keysList->data; 需要以下内容:

{{1}}

希望这有帮助

答案 2 :(得分:0)

“我如何从参考中检索数据?”是什么意思?你尝试过这样做吗?

std::string中唯一的数据是字符串长度和有效负载char*数组 keysList->data.length()访问keysList->data.c_str()数组时,char*将访问该长度。

您的上一句话 从参考资料中获取数据:

string recentKey = (keysList->data);

此语句创建字符串的完整副本。由于它是副本,因此对recentKey的任何修改都不会显示在keysList->data中。这是好事还是坏事取决于你的意图。