C++ 通过引用获取内容

C++ 通过引用获取内容,c++,gtk,glib,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

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

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

数据引用字符串的引用。如何从引用中检索数据

如果数据引用的是字符串

keysList->data返回字符串

#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;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串MyString(“ABCD”);
字符串&MyString2=MyString;
char*cstr;
cout你所说的“如何从引用中检索数据”是什么意思?你试过这样做吗

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

您的最后一条语句是从引用中获取数据:

string recentKey = (keysList->data);

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

如果
keysList->data
gpointer
void*
),我想有些演员会像 需要采取以下措施:

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

希望这有帮助

如果
数据
是一个
字符串&
(到有效位置),那么您的语句
string recentKey=(keysList->data);
是正确的。您是否尝试过打印或检查它?但数据无效*我尝试过显示值,它显示的是内存引用,而不是值。。。。