2016-01-13 3 views
0

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

[7,13,17] 
[[0,1,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0], 
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], 
[0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0], 
[1,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,0], 
[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0], 
[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0], 
[0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0], 
[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0], 
[0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0]] 

код, который я написал, как

#include <iostream> 
#include <fstream> 

using namespace std; 

int main() 
{ 

    int parameter[10]; 
    int physical[7][7]; 

    const char* filename; 

    filename = "src/cplex_N7.txt"; 

     ifstream f(filename, ios::in); 
     if (!f) { 
     cerr << "No such file: " << filename << endl; 
     throw(1); 
     } 

    f >> parameter >> physical ; 
    // cout content 
    return 0; 
} 

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

+0

Вы не обрабатываете удаление всех символов '[,] ,,' в тексте – NathanOliver

+0

Вам необходимо прочитать каждый номер отдельно, пропуская ограничители и, например, вы идете. –

+1

Вы получите дополнительную/лучшую помощь, если вы изложите * какие * ошибки, * что * неправильный вывод и что это должно быть. –

ответ

0

Вы не можете работать со строками таким образом. Кажется, что вы изучаете C++ с помощью метода try/error, и это самый худший способ изучить язык программирования. я написал небольшой образец, чтобы прочитать строку цифр в вашем формате:

string x = "1,0,1,0,1,0,1,0,1,0"; 
int array[10]; 
for(int i = 0; i < x.size(); i+=2) 
    array[i/2] = x[i] - '0'; 

число в четных индексах, поэтому мы должны перебирать на даже позы строки. каждый из них является символом char, и мы можем получить значение int, вычитая их из «0».

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