2014-11-16 3 views
-1

Я относительно новичок в C++, и я пытаюсь прочитать sequenceofchars из текстового файла в массив символов, который динамически выделяется. Мой код выглядит следующим образом:Чтение C++ символов из текстового файла в динамически выделенный массив

while (file.get(c)) 
{ 
    if (c =='\n') 
     continue; 

    char *temp = new char[i++]; 
    arrayA = new char[i++]; 
    arrayA[i] = c; 
    delete [] arrayA; 
    arrayA = temp; 
} 

и формат текстового файла выглядит следующим образом:

>NameOfChars 
sequenceofchars 

Это, очевидно, ужасно сломаны, но я изо всех сил, чтобы выяснить точную методологию можно было бы использовать для Пройдите это. Я знаю о классе Vector, но я не уверен, как это использовать, если это предпочтительный метод перераспределения массивов в куче. Любая помощь будет принята с благодарностью. Спасибо.

ответ

1

Я думаю, что вам обязательно нужно взглянуть на класс векторов, поскольку он сделает ваш код намного чище. Вот небольшой (непроверенный) пример кода, как использовать его:

#include <vector> 

std::vector<char> my_vector; 

while (file.get(c)) 
{ 
    if (c =='\n') 
     continue; 

    my_vector.push_back(c); 
} 

Для получения дополнительной информации, пожалуйста, проверьте http://www.cplusplus.com/reference/vector/vector/push_back/

+0

Я был бы в состоянии преобразовать вектор в массив символов, в конце концов? – tdark

+0

Да, вы можете: http://stackoverflow.com/questions/2923272/how-to-convert-vector-to-array-c –

0

Необработанный массив не распределяется динамически; поэтому использование контейнера STL, подобного вектору, будет лучше.

ifstream inf; 
char c; 
vector<char> charVec; 

while (inf >> c) 
{ 
    charVec.push_back(c); 
} 
Смежные вопросы