2015-11-16 3 views
-2
#include <iostream> 
#include <fstream> 
#include <conio.h> 
#include <string> 

using namespace std; 

int main() 
{ 
    string arr[3][2]; 
    int i =0,j=0; 
    ofstream out ("test1.dat" , ios::app); 
    string name; 
    while(true) 
    { 
     cin>>name; 
     if(name=="end") 
     break; 
     out << name <<' ' ; 

    } 
    out.close(); 

    ifstream in ("test1.dat", ios::in); 
    in >> name; 
    while(!in.eof()) 
    { 
     arr[i][j]=name; 
     in>>name; 
     j++; 
     arr[i][j]=name; 
     i++; 
     j=0; 

    } 
    in.close(); 
    for(i=0;i<3;i++){ 

    cout<<endl; 
     for(j=0;j<2;j++){ 

      cout<<arr[i][j]<<" ";} 
     } 

    return 0; 
} 

, пожалуйста, помогите мне с ошибкой во время выполнения с этим. Какая у меня проблема? Я хочу записать некоторые данные в файл, затем прочитать их и поместить в массив и затем распечатайте массив. Я хочу писать и читать файл по строкам, а не по символу. Прошу про мой слабый английский. thanksКак читать файл и помещать в массив

+0

Это не 'C', BTW. –

+0

Это не имеет ничего общего с человеком C. Что касается вашей проблемы: убедились ли вы, что потоки созданы успешно? Кажется, вы не проверяете бит состояния. – szczurcio

+0

Скорее всего, 'i' становится больше 2 в вашем цикле чтения. – NathanOliver

ответ

0

Попробуйте добавить условие для i в цикл while. Это исправляет ошибку во время выполнения с границами массива, но вы по-прежнему есть логическая ошибка (если вы не хотите дублировать вхождений одного и того же слова в массиве?)

while(!in.eof() && i < 3) 
{ 
    arr[i][j]=name; 
    in>>name; 
    j++; 
    arr[i][j]=name; 
    i++; 
    j=0; 
} 
Смежные вопросы