-1

为什么我会收到此错误?

不存在从 std::string 到 std::string 的合适转换函数吗?错误出现在 memcpy (value, (string*)(adress), sizeof(value)) 中的 ',';

int main ()
{
    string adress;

    cout << "Please, enter the adress you want to access: " << endl << endl;
    getline (cin,adress);

    cout << "The adress is : " << adress << endl << endl;
    getchar();

    string value[512];
    memcpy (value, (string*)(adress), sizeof(value));

    cout << "The value of " << adress << " is: " << adress;

    getchar();

    return 0;
}
4

2 回答 2

1

memcpy 需要一个地址,您应该更改它 m​​emcpy (value, (string*)(&adress), sizeof(value)) 以避免警告。

但是,std::string 是一个模板类,使用 memcpy 是不安全的,如果你想复制它,只需:

string newString = address;

如果要复制到 char 缓冲区,请执行以下操作:

char buffer[255] ;
strcopy(buffer, address.c_str())
于 2013-06-03T20:12:14.863 回答
0

你的代码:

string value[512];
memcpy (value, (string*)(adress), sizeof(value));

似乎是在说它想要这样做:

string value[512];
for( int i=0; i<512; ++i )
    value[i] = adress;

而您对用户的输出:

cout << "Please, enter the adress you want to access: " << endl << endl;

似乎想做更多这样的事情:

long lTemp = atol(adress.c_str());
void *pAddress = (void*)lTemp;
lTemp = *((char*)pAddress);
cout << "Found: " << lTemp << " in adress" << endl;

编辑:睡在上面之后,也许你的意思是这样的:

char value[512];
memcpy (value, (void*)atol(adress.c_str()), sizeof(value));

cout << "Read: ";
for( int i=0; i<sizeof(value); ++i ) printf("0x%x ", (int)value[i]);
cout << endl << endl;

呃,不建议这样做。(更不用说 32 与 64 位指针转换问题)

于 2013-06-03T20:50:01.773 回答