2015-04-20 3 views
-3

Привет всем У меня есть файл, который я пытаюсь прочитать в векторном массиве. Я проверил несколько других сообщений, которые дошли до меня, насколько я понял. Я продолжаю сталкиваться с ошибкой, когда он не позволяет мне вставлять мою строку, используя функцию put_back(). Я продолжаю получать ошибку char.Ошибка чтения строки из текстового файла в векторный массив C++

#include <iostream> 
#include <fstream> 
#include <string> 
#include <sstream> 
#include <vector> 
using std::vector; 
using namespace std; 
string outPutFileName; 
vector<vector<string> > array2D; 
#define HEIGHT 32 
#define WIDTH 9 

int main() { 
string x; 
string line; 
string filename; 
ifstream infile; 


infile.open("file.txt"); 


if (infile.fail()) { 
    cerr << " The file you are trying to access cannot be found or opened"; 
    exit(1); 
} 

array2D.resize(HEIGHT); 
for (int i = 0; i < HEIGHT; ++i) { 
    array2D[i].resize(WIDTH); 
} 
    while (getline(infile, line)) { 
     istringstream streamA(line); 

     while (streamA >> x) { 
      for (int row = 0; row < HEIGHT; row++) { 
       for (int col= 0; col < WIDTH; col++) { 
        array2D[row][col].push_back(x); 
        col++; 
       } 
       row++; 
      } 
     } 

    } 

    for (int i = 0; i <HEIGHT; i++) { 
     for (int j = 0; j <WIDTH; j++) { 
      cout << array2D[i][j] << " "; 
     } 
     cout << endl; 
    } 



    return 0; 
} 

ответ

0

Тип array2D[row][col] является std::string, вы пытаетесь вызвать push_back на том, что вместо одного из векторов. Вы, вероятно, имели в виду:

array2D[row][col] = x; 
+0

Спасибо за ответ, когда я попробую это назначение, мой массив загружается нулями? – HaitianFella

+0

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

+0

Ой, я пытался создать сценарий, в котором строки и столбцы из файла будут считаны в моем векторе? Является ли природа вектора или просто плохим программированием с моей стороны для чтения с последнего ввода? – HaitianFella

0

Спасибо за помощь, я нашел решение.

#include <iostream> 
#include <iomanip> 
#include <fstream> 
#include <string> 
#include <sstream> 
#include <vector> 
using std::vector; 
using namespace std; 
string outPutFileName; 
vector<vector<string> > array2D; 
#define HEIGHT 32 
#define WIDTH 9 

int main() { 
string x; 
string line; 
string filename; 
ifstream infile; 


infile.open("file.txt"); 

//error check 
if (infile.fail()) { 
    cerr << " The file you are trying to access cannot be found or opened"; 
    exit(1); 
} 
array2D.resize(HEIGHT); 
for (int i = 0; i < HEIGHT; ++i) { 
    array2D[i].resize(WIDTH); 
} 
int row; 
while (getline(infile, line)) { 
    istringstream streamA(line); 

    int col = 0; 
    while (streamA >> x) { 
     array2D[row][col] = x; 
     col++; // Note: This might go out of bounds 
    } 
    row++; // Note: This might go out of bounds 
} 

    for (int i = 0; i <HEIGHT; i++) { 
     for (int j = 0; j <WIDTH; j++) { 
      cout << array2D[i][j] << " "; 
     } 
     cout << endl; 
    } 

    return 0; 
} 
Смежные вопросы