• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pusty buffor w winapi używając fstream

Object Storage Arubacloud
0 głosów
150 wizyt
pytanie zadane 26 lipca 2015 w C i C++ przez Wirus Stary wyjadacz (14,000 p.)
edycja 27 lipca 2015 przez Wirus

Siema robię konfigurator najprostrzej wersji, ale w wersji konsolowej działa, a w WinApi nie za bardzo.

string config::getValues(string k)
{
	file.open("config.ini", ios::in | ios::out);
	vector<string> line;
	string buff;
	while (!file.eof())
	{
		getline(file, buff);
		line.push_back(buff);
	}

	if (line.size() > 0)
	{
		for (int i = 0; i < line.size(); i++)
		{
			if (line[i].find(k) != std::string::npos)
			{
				buff = line[i].erase(0, line[i].find('=') + 1);

				for (int j = 0; j < line[i].length(); j++)
					while (isspace(line[i][j]))
                    {
						buff.erase(j, j + 1);
                    }
				return buff;
			}
			else return "Error: Nothing find";
		}
	}
	else return "Error: Buffer is empty";
	file.close();
}

Wywołanie też nie jest skomplikowane

config* conf = new config();

/*Email* forMe = new Email(
		base64_decode(conf->getValues("EmailLogin")),
		base64_decode(conf->getValues("EmailPassword")),
		base64_decode(conf->getValues("EmailServer"))
		);

 

1 odpowiedź

0 głosów
odpowiedź 26 lipca 2015 przez adrian17 Ekspert (344,860 p.)
Poza faktem że kod jest brzydki a pętla usuwająca whitespace na pewno nie zadziała poprawnie... jeśli w pliku nie ma spacji, powinno być ok. Jedyne co mogę strzelić to że plik config jest w złym miejscu. Upewnij się że plik się w ogóle otwiera.
komentarz 26 lipca 2015 przez Wirus Stary wyjadacz (14,000 p.)
1.Daj radę jak pisać "ładnie"

2.Wiem, że spacje(robiłem już zadanie na spooju)

3.Plik jest w dobrym miejscu

4.Plik się otwiera w normalnym programie konsolowym, gdzie funkcja gówna to int main, a ja piszę w WinApi i jest int WINAPI WinMain(...
komentarz 26 lipca 2015 przez adrian17 Ekspert (344,860 p.)
Globalny fstream (zrób lokalny ifstream), pętla na .eof() (lepiej pętlę na getline()), używanie .close() (jeśli ifstream jest lokalny, to jest to niepotrzebne), błędne używanie .erase(), dynamiczne alokowanie configu z jakiegoś powodu.

Wciąż nie napisałeś co właściwie się konkretnie dzieje gdy próbujesz go używać w "winapi" (co interpretuję jako subsystem Windows, bo to on wymusza WinMain()).
komentarz 27 lipca 2015 przez Wirus Stary wyjadacz (14,000 p.)
Plik jest otwierany, ale bufor/zmienna jest pusta.

Dynamiczna alokacja pamięci wynika z tego, że kod skopiowałem ze starego programu, który był w c++/CLI wymagane tam były wskaźniki, gdy definiowałem klase w public:
komentarz 27 lipca 2015 przez adrian17 Ekspert (344,860 p.)
To inaczej, czy pętla "while (!file.eof())" wykonuje się choć raz? Próbowałeś przechodzić przez kod debugerem?

Podobne pytania

0 głosów
0 odpowiedzi 76 wizyt
pytanie zadane 19 marca w C i C++ przez Helixxx Nowicjusz (120 p.)
+1 głos
1 odpowiedź 66 wizyt
pytanie zadane 5 marca w JavaScript przez new_user Użytkownik (610 p.)
0 głosów
0 odpowiedzi 143 wizyt

92,568 zapytań

141,424 odpowiedzi

319,634 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...