2016-11-19 11 views
-2

ich aus einer Datei Zeilen speichern möchten in einem Array und das ist einfach mit einem String zu tun:C++: Von Zeichenkette char *

std :: string query[100]; 

std::ifstream ifs(filename); 

if (ifs.is_open()) 
{ 
    while (getline(ifs, query[size])) 
    { 
     size++; 
    } 
} 

Problem ist, ich darf keine Strings verwenden. Wie kann ich dies zum Funktionieren bringen, wenn Abfrage ein Char * Array war?

+0

'Problem ist, ich bin strings' verwenden nicht erlaubt - Nichts würden Sie aufhören von der Erstellung eine vereinfachte String-Klasse und verwenden Sie diese stattdessen. So vereitelst du solche Einschränkungen wirklich. – PaulMcKenzie

+1

Mögliches Duplikat von [std :: string to char \ *] (http://stackoverflow.com/questions/7352099/stdstring-to-char) –

Antwort

1

Eine einfache Möglichkeit (aber nur über begrenzte Kapazität) ist allocateing einige Puffer und Daten in sie zu lesen.

const int maxLength = 1024; // specify enough length 
char* query[100]; 

std::ifstream ifs(filename); 

if (ifs.is_open()) 
{ 
    while (ifs.getline(query[size] = new char[maxLength], maxLength)) 
    { 
     size++; 
    } 
    delete[] query[size]; // delete buffer where data wasn't read 
} 

Zur Vermeidung von Out-of-Range-Zugang, sollte die Bedingung in while Anweisung

sein
while (size < sizeof(query)/(*query) && // size is less than number of elements in query 
    ifs.getline(query[size] = new char[maxLength], maxLength)) 
Verwandte Themen