Funkcja błędnie ładuje zawartość pliku do tablicy

0

Oto jest mój kod:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

void test(string (&strWords)[3][2])
{
	string strTmp = "";
	unsigned short line = 0;
	ifstream plik;
	plik.open("test.txt");
	while(getline(plik, strTmp))
	{
		if(!strTmp.empty())
		{
			short bPos = 0;
			for(size_t i = 0; i < strTmp.length(); i++)
			{
				if(strTmp[i] == ';')
				{
					bPos++;
					continue;
				}
				strWords[line][bPos] += strTmp[i];
				//cout << line << " " << bPos << " " << strTmp[i] << " " << strWords[line][bPos] << endl;
			}
			line++;
		}
	}
	plik.close();
}

int main()
{
	string asd[3][2];
	test(asd);
	cout << "*" << asd[0][0] << "*" << endl;
	cout << "*" << asd[0][1] << "*" << endl;
	cout << "*" << asd[0][2] << "*" << endl;
	cout << "*" << asd[1][0] << "*" << endl;
	cout << "*" << asd[1][1] << "*" << endl;
	cout << "*" << asd[1][2] << "*" << endl;
	system("Pause");
	return 0;
}

Funkcja test ma załadować wyrazy oddzielone średnikiem każdej linijki do tablicy.

Oto zawartość pliku test.txt:

abc;222;zzz
2abc2;888;hhh

I teraz pożądany efekt jaki ma być wyświetlony w konsoli jest taki:

*abc*
*222*
*zzz*
*2abc*
*888*
*hhh*

Natomiast otrzymuję taki:

*abc*
*222*
*zzz2abc*
*zzz2abc*
*888*
*hhh*

jak widać 3 i 4 linijka zawierają coś czego nie powinno tam być. Dlaczego? Głowię się już z tym z dobrą godzinę i po prostu nie widzę błędu w kodzie.

0

Inną tablicę tworzysz, a inną wypisujesz ;-)
Zmień w kodzie na

        string asd[2][3];
void test(string (&strWords)[2][3])

i będzie poprawnie.

user image

Ewentualnie zmień sposób wypisywania i zostaw jak masz, ale chyba sensowniejszym układem będzie w każdej trzymać słowa w takim układzie jak teraz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1