请问:怎么实现int数值、double数值与string类型字符串的相互转化

请教:如何实现int数值、double数值与string类型字符串的相互转化
例如   int   i=123;   double   a=3.1416;
如何把i、a的值转换为string类型的字符串,且可控制有效位数?
反过来,如何把string类型的字符串转换为int、double类型变量的值呢?
请高手指教。

------解决方案--------------------
sprintf()好不好?
------解决方案--------------------
#include "iostream "
#include "string "

using namespace std;

int main(int argc, char *argv[])
{
int i = 123;
double a = 3.1416;

string stri;
string strf;

char buffer[128];

sprintf(buffer, "%d ", i);
stri = buffer;

sprintf(buffer, "%.4f ", a);
strf = buffer;

cout < <stri < <endl;
cout < <strf < <endl;

int i2 = atoi(stri.c_str());
double a2 = atof(strf.c_str());

cout < <i2 < <endl;
cout < <a2 < <endl;

return 0;
}