2015-01-30 4 views
0

Я пытаюсь написать программу, чтобы прочитать файл и скопировать необходимые фразы. Примерный файл выглядит так:изменение массива внутри цикла

name     = magic_ring; 

mainflag    = magic; 
flags     = ring; 

value     = 600; 

В одном из файлов имеется более одного объекта. Моя идея - прочитать каждый символ отдельно и удалить все пробелы. После этого я собираюсь «приклеить» символы в одну строку. Второй шаг - найти позицию «=» myString.find («=») и скопировать все символы после «=», пока программа не увидит «;». Скопированные символы сохраняются в новом массиве с именем «имя», «mainflag», «flags», «value» и т. Д. Его работы, но проблема в том, что мне приходится писать столько циклов, сколько есть массивов. Существует ли какой-либо способ изменения массива в такой ситуации? Это мой фрагмент моего кода:

for (int index= 0; index < 4; index++) 
    { 
     size_t pos = myString.find("="); 
     arrayChar[pos] = '\0'; //removing "=" from this line 

     for(int i = 0; arrayChar[i] != ';'; i++) 
      mainflag[index] = mainflag[index] + mainflag[i]; 
    } 
+0

Ваш вопрос непонятен. Какую структуру/объект вы хотите иметь в конце? –

+2

Почему бы не использовать существующую библиотеку файлов конфигурации (которая поддерживает формат ini), например [boost program_options] (http://www.boost.org/doc/libs/release/doc/html/program_options.html) –

+0

Я не знаю «Не понимаю вообще ваш вопрос ... – bolov

ответ

0

@GeorgeHoupis, @bolov: английский не является моим родным языком, поэтому я на самом деле может быть неправильно понято. Я хотел сказать, что в моем случае я должен написать для каждого массива другой цикл. Его внешний вид выглядит так:

for (int index= 0; index < 4; index++) //for name 
{ 
    size_t pos = myString.find("="); 
    arrayChar[pos] = '\0'; //removing "=" from this line 

    for(int i = arrayChar[i + 1] != ';'; i++) 
     name[index] = name[index] + arrayChar[i]; 
    //******************************************************* 
    size_t pos = myString.find("="); 
    arrayChar[pos] = '\0'; //removing "=" from this line 

    for(int i = arrayChar[i + 1] != ';'; i++) 
     mainflag[index] = mainflag[index] + arrayChar[i]; 
    //******************************************************* 
    size_t pos = myString.find("="); 
    arrayChar[pos] = '\0'; //removing "=" from this line 

    for(int i = arrayChar[i + 1] != ';'; i++) 
     flags[index] = flags[index] + arrayChar[i]; 
} 

как и посмотреть код почти такой же. Единственное отличие - массивы. Я должен сохранить каждую информацию в другом массиве. Я хотел бы знать, как изменить текущий массив после круга.

Смежные вопросы