#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<>()
возвращаемое значение по умолчанию.