No entiendo bien tu pregunta, si ya tienes definidas las cadenas en una variable ¿para qué quieres otras? , o quieres decir esto:
#include <iostream>
#include <cstdlib>
int main(int argc, char *argv[])
{
std::string sValores[3] = {"uno", "dos", "tres"};
//Creamos las variables a partir de sValores
std::string cadenaUno = sValores[0];
std::string cadenaDos = sValores[1];
std::string cadenaTres = sValores[2];
// O a un array constante de caracteres.
const char *cCadenaUno = sValores[0].c_str();
const char *cCadenaDos = sValores[1].c_str();
const char *cCadenaTres = sValores[2].c_str();
std::cout << cadenaUno << std::endl;
std::cout << cadenaDos << std::endl;
std::cout << cadenaTres << std::endl;
std::cout << cCadenaUno << std::endl;
std::cout << cCadenaDos << std::endl;
std::cout << cCadenaTres << std::endl;
return EXIT_SUCCESS;
}
O quizás te refieras a esto:
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
using namespace std;
int main(int argc, char *argv[])
{
string sValores[3] = {"uno", "dos", "tres"};
vector<string*> variablesNuevas;
//Creamos las variables a partir de sValores
for(int i = 0; i!= sizeof(sValores)/sizeof(string); ++i)
{
string * tmp = new string(sValores[i]);
variablesNuevas.push_back(tmp);
}
for(vector<string*>::iterator it = variablesNuevas.begin(); it != variablesNuevas.end(); ++it)
{
cout << **it << endl;
// Liberamos memoria
delete *it;
}
return EXIT_SUCCESS;
}