How do I send a string to master using i2c I want to write an Arduino program that simply recieves a string (via the I2C wire library) from a master Arduino, then waits for a request, and sends that string back.

Here is my code:

#include &lt;Wire.h&gt;

void setup()
{
  Wire.begin(4); 
  Wire.onReceive(receiveEvent); 
  Wire.onRequest(requestEvent);
}

String data = "";

void loop()
{

}

void receiveEvent(int howMany)
{
  data = "";
  while( Wire.available()){
    data += (char)Wire.read();
  }
}

void requestEvent()
{
    Wire.write(data);
}


I read in the API that the write() function accepts a string, but I keep getting a "No matching function for call" error.  I tried to simply replace

Wire.write(data);


with 

Wire.write("test");


and that worked without error.  Why is this the case?
data is a String. "test" is a char*. Wire.write() has no prototype that takes a String.

Wire.write(data.c_str());