Как прочитать заданный ввод из текстового файла на C ?

#c

Вопрос:

Ввод:

10.0.0.5 127.0.0.1 3472

10.0.0.11 127.0.0.1 3000

10.0.0.12 127.0.0.1 3030

код:

 struct sample{
    string Neighbours;
} input;

int main()
{
string mytext;
 int j=0;
ifstream MyReadFile("/f.txt");
while(getline(MyReadFile,mytext))
{    
  if(j%2==0)
    {
       input.Neighbours=mytext;
    }  
    j  ;
}
cout<<input.Neighbours<<endl;
MyReadFile.close();
} 
 

Я могу получить только последнее значение 10.0.0.12 127.0.0.1 3030 в качестве выходного. что я должен сделать, чтобы прочитать все данные и сохранить их в переменной???

Ответ №1:

Самый простой способ на языке C прочитать весь файл сразу-это использовать <iterator> библиотеку.

 #include <iterator>
#include <string.h>
#include <fstream>
#include <iostream>

int main()
{
    std::ifstream file("input.txt", std::ios::in);

    std::string str ((std::istreambuf_iterator<char>(file)), (std::istreambuf_iterator<char>()));

    std::cout << str << "n";
}
 

Результатом будет просто все содержимое «input.txt».

Пояснение: В этой строке

 std::string str ((std::istreambuf_iterator<char>(file)), (std::istreambuf_iterator<char>()));
 

вы используете перегруженный std::string конструктор для построения строки с использованием начального и конечного итератора. std::istreambuf_iterator<char>(file) возвращает итератор в начало file , std::istreambuf_iterator<char>() один в конец, используя std::istreambuf_iterator<>() возвращаемое значение по умолчанию.