Stai facendo pasticci mescolando la sintassi di indice con quella di iteratore... per ciclare su un vector (o su un qualunque altro container della STL) con gli iteratori si fa:
codice:
for(vector<int>::iterator it=array.begin(); it!=array.end(); ++it)
{
// ... codice del ciclo ...
}
Dentro al ciclo per ottenere l'elemento corrente basta fare *it, ovvero "dereferenziare" l'iteratore (metto "dereferenziare" tra virgolette perché un iteratore non è necessariamente un puntatore). Se volessi stampare tutti gli elementi, farei:
codice:
for(vector<int>::iterator it=array.begin(); it!=array.end(); ++it)
{
cout<<*it<<" ";
}
L'incremento dell'iteratore solitamente si fa con la notazione prefissa perché in genere è più efficiente (si risparmia una copia); con i puntatori è indifferente (l'ottimizzatore vede che il valore restituito non viene usato e evita la copia), ma con gli iteratori, che sono oggetti più complicati, il compilatore può non essere così furbo.
Quanto al tuo problema, la cosa più semplice è usare uno stringstream, ovvero uno stream che invece di scrivere su schermo o su file fornisce una std::string contenente tutto quello che si è scritto:
codice:
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main(int argc, char** argv) {
string result="";
vector<int> array(10);
ostringstream os;
for(vector<int>::iterator it=array.begin(); it!=array.end(); ++it)
os<<*it<<" ";
result=os.str();
In ogni caso, l'uso degli iteratori per i vector è in genere inutilmente pesante (come sintassi), dato che per container con accesso casuale O(1) come i vector non c'è alcun vantaggio in termini di prestazioni ad usare gli iteratori piuttosto che l'usuale notazione ad indice (array[i]). Discorso diverso invece per altri container, ad esempio, per le list, a cui si può accedere solo tramite gli iteratori.
Tieni comunque presente che il nuovo standard C++ consente di alleggerire un po' la sintassi degli iteratori con il nuovo "range-based for loop":
codice:
for(int & i: array)
os<<i<<" ";
che altro non è che "zucchero sintattico" per l'equivalente loop fatto con gli iteratori.