2010-11-18 11 views
0

Bu kod neden karakterleri ilk satır olmadan yazdırıyor? localhost yerine ocalhost diyor. Yardım için minnettarım. sizin süre döngü içindeİlk karakter, ifstream'de kayboluyor

#include <winsock2.h> 
#include <mysql/mysql.h> 
#include <iostream> 
#include <windows.h> 
#include <fstream> 
using namespace std; 

int main() {  
int b = 0; 
char * pch; 
int stringLength = 0; 
char textRead[50]; 
ifstream infile("config.ini", ios::in | ios::binary);    
if(!infile) { 
      cout << "ERROR: config.ini not found!\n"; 
      system("pause"); 
      exit(0); 
} 

infile >> textRead; 
stringLength = strlen(textRead); 
pch=strchr(textRead,'"'); 
while(pch != NULL) { 
      infile.seekg(pch-textRead-1); 
      infile >> textRead; 
      pch = strchr(pch+1,'"'); 
} 
cout << textRead; 
infile.close(); 
+0

'config.ini' içeriği olmadan söylenmesi imkansız. –

+2

Neden INI dosyalarını ayrıştırmak için kod yazıyorsunuz? Açıkça Windows kullanıyorsunuz, ihtiyacınız olan INI değerlerini almak için [GetPrivateProfileString'] 'i (http://msdn.microsoft.com/en-us/library/ms724353.aspx) arayın. –

cevap

0

aramak:

infile >> textRead; 
    pch = strchr(pch+1,'"'); 

ikinci satırda strchr çalıştırmayı denediğinizde, hala sen textRead DEĞİL en son çıkarılan kelime vardı önceki dizeye geri sözediyor .

Maalesef aslında ne yapmaya çalıştığınızı anlayamıyorum, bu yüzden nasıl düzeltileceğine dair önerilerde bulunamıyorum.

0

Bunu sağlamadığınız için config.ini içeriğine bakıyorum, ancak ifstream sadece iyi okuyor gibi görünüyor. cout << textRead << endl;'u kontrol etmek için infile >> textRead; numaranıza koyun. Bu benim config.ini için kullanıyorum budur:

localhost = "foo" 

seekg ve arkadaşları ile Mantığınız olsa kırık görünüyor. seekg, ayrıştırmayı desteklemek için kullanılmaz (sizin durumunuzda, alıntıları atlayarak); İhtiyaç duyulduğunda büyük dosya yığınlarını atlamanız gerekiyordu, bu yüzden okuma zamanını harcamıyorsunuz. Dürüst olmak gerekirse, ilk karakter bir alıntı ise, pch-textRead-1'dan beri -1 ne olabileceğinden emin değilim.

Başka bir şey, infile >> textRead;'un bir satırı okumaması, bir sözcük okuyup baştaki boşlukları atmasıdır. gerekli olmadığından

kayda geçsin

#include <winsock2.h> 
#include <mysql/mysql.h> 
#include <windows.h> 

atlanmış.