Copy string z getline do vectora <char> c++


(Pawleksy) #1

Witam mam pewien problem próbuje skopiować string do vectora . Po wrzuceniu linii z pliku do stringa i skopiowaniu go do chara, następnie wrzuceniu go do vectora przy wypisywaniu go wyświetla mi tylko 1 indeks chara, to trochę dziwne ponieważ wypisując char po skopiowaniu go z stringa wyświetla mi wszystkie elementy 1 linii z pliku. Podejrzewam że ma to związek z wskaźnikiem na char przy wrzucaniu go do vectora. Za wszelkie wskazówki będę wdzięczny pozdrawiam.

vector<char>u, t;

    string test;

    char ucz[10],tes[10];

	cout<<"Plik uczacy: ";
	cin>>ucz;
	cout<<"\nPlik testujacy: ";
	cin>>tes;

	FILE *plik1 = fopen(ucz, "rt");
	if(plik1==NULL)
	{
		cout << "No file\n";
	}
	fscanf(plik1,"%d %d %d", &a1, &b1, &c1);
 
        FILE *plik2 = fopen(tes, "rt");
	if(plik2==NULL)
	{
		cout << "No file\n";
	}
	fscanf(plik2,"%d %d %d", &a2, &b2, &c2);


    fstream ucze;
	ucze.open(ucz);
	ucze.seekg(8, ucze.beg); // omijam pierwsze 8 znakow z pliku
	if(ucze.good()==true)
	{

        while(getline(ucze, test)) // test to string
        {
            char *test2 = new char[test.size() + 1];
            copy(test.begin(), test.end(), test2);
            test2[test.size()] = '\0';
            u.push_back(*test2); // tu wrzuca tylko 1 indeks z skopiowanego chara
            cout<<test2<<endl; // tu wypisuje cały string w char


            if(test2[0]=='1')
            {
                u1++;
            }
            if(test2[0]=='2')
            {
                u2++;
            }
            if(test2[0]=='3')
            {
                u3++;
            }
            delete [] test2;
        }

	ucze.close();
	}
	else
		{
			cout<<"Nie mozna otworzyc pliku!";
		}

    for(int i=0; i<u.size(); i++)
        cout<<u[i]<<endl; //wypisuje vector

(kostek135) #2

Nie rozumiem, po co ci w tym wszystkim getline, zrobiłbym to (kopiowanie stringa do vector<char>) tak: