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.