2013-03-02 15 views
2

У меня есть файл с именем read.txt E:\My_project\dictionary database\read.txt и это выглядит какКак читать и писать файл

1245 
15 
12 
454564 
122 
.... 

Я хочу, чтобы прочитать read.txt построчно и хочу сохранить эти значения в вектор и, наконец, вывести вектор и записать значения вектора в другой файл txt с именем write.txt, который будет выглядеть так же, как read.txt ?? Как я могу сделать это в C++ ???

Я попытался прочитать значение из файла, как это:

ifstream ifs("read.txt", ifstream::in); 

Но я не понимаю, где держать read.txt file.What должно быть расположение read.txt и write.txt ?? ?

Отредактировано: если я использовать вектор для сохранения ввода из текстового им получаю сообщение об ошибке:

int textLine; 
    vector<int> input; 

    ifstream ifs("C:\\Users\\Imon-Bayazid\\Desktop\\k\\read.txt", ifstream::in); 

    if (ifs.good()) { 

     while (!ifs.eof()) { 
       getline(ifs, textLine); 
       input.push_back(textLine); 
     } 

     ifs.close(); 

    } else 
     cout << "ERROR: can't open file." << endl; 


     for(int i=0;i<input.size();i++) 
      cout<<input.at(i); 
+0

Почему вы добавили тег ** vector ** к этому сообщению? Может быть, вы можете что-то сделать с помощью std :: vector объекта? –

+0

Попробуйте абсолютный путь для бит 'open'? –

+0

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

ответ

1

Поскольку имя файла жестко закодировано до "read.txt", файл должен находиться в той же папке, что и ваш исполняемый файл. Если местоположение файла не изменится, вы можете жёстко полный путь:

ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in); 

(обратите внимание на удвоенные обратные слэши: это для компилятора C++, чтобы относиться к ним как обычные косые черты).

+0

Я отредактировал мой вопрос, не могли бы вы увидеть это, чтобы ответить ?? @dasblinkenlight – DarkenShooter

+1

@ user2029069 Вы получаете сообщение об ошибке, потому что не можете использовать 'getline (ifs, textLine);' читать 'int'. Для этого вам нужно использовать 'ifs >> textLine'. Я предлагаю переименовать 'textLine' в нечто более подходящее, например. 'IntValue'. – dasblinkenlight

+0

Как записать это в файл, который будет выглядеть так же, как файл read.text ??? – DarkenShooter

1

Если ваш бинарный файл находится в E:\My_project, то вам нужно настроить путь к файлу вы открытие до: ifstream ifs("./dictionary database/read.txt", ifstream::in);

См. this Связанный вопрос.

+0

Я отредактировал мой вопрос, не могли бы вы увидеть это, чтобы ответить ?? – DarkenShooter

1

Вы можете дать абсолютный путь к файлу при его открытии:

ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in); 

Или вы можете переместить исполняемую программу, которая считывает файл в том же каталоге, где файл.

Edit:

Объявив свой вектор, как это: vector<int> input; создать вектор, в котором можно хранить только целые значения, но то, что вы читаете из файла (textLine) является строкой. Если вы хотите интерпретировать только цифры из файла как целочисленные значения, вам нужно будет использовать

input.push_back(atoi(textLine.c_str())); 
+0

Я отредактировал мой вопрос, не могли бы вы увидеть это, чтобы ответить? – DarkenShooter

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