2011-05-31 65 views
0

我有一个字符串对象的引用,我如何从中获取数据。这里是我的示例:获取参考文献的内容

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

数据引用字符串的引用。我怎样才能从参考

+0

如果'data'是'串'(到有效位置)那么你的语句'string recentKey =(keysList-> data);'是适当的。您是否尝试过打印或检查它? – iammilind 2011-05-31 04:57:45

回答

1

如果keysList->datagpointervoid*),我想下面是需要一些铸像 :

string recentKey = *(string*)keysList->data; 

希望这有助于

+0

许多很多谢谢.... – boom 2011-06-01 04:54:05

+0

很高兴它帮助:-) – 2011-06-01 13:04:01

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; 
} 
0

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

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

你的最后一句话是参考获取数据:

string recentKey = (keysList->data); 

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

+0

但数据是无效的*我试图显示的值,它显示内存的参考,而不是值.... – boom 2011-05-31 09:07:03