Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
memor1s
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 6
#1

Шаблонная функция для чтения целых чисел, дробных, строк из файла - C++

10.11.2013, 18:58. Просмотров 968. Ответов 5
Метки нет (Все метки)

Необходимо написать шаблонную функцию для чтения целых чисел, дробных, строк из файла. С числами все работает. Но при чтении строк возникают проблемы. Строки читаются по словам до пробела, а должны полностью. Читать через getline нет возможности т.к. функция шаблонная. Помогите
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class T> 
void LoadFromFile(char* filename, vector<T>& input)
{
  ifstream f;
  f.open(filename, ifstream::in);
  if (!f.is_open()) 
        cout << "Ошибка открытия файла!\n"; 
  
  T r;
 
  while (!f.eof())
    {
     f>>r;
     input.push_back(r);
    }
    f.close();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2013, 18:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шаблонная функция для чтения целых чисел, дробных, строк из файла (C++):

Функция чтения столбцов чисел из текстового файла
Необходима функция, которая откроет текстовый файл, прочтет заранее заданное...

Функция для чтения из файла в матрицу
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;fstream&gt; using namespace...

Шаблонная функция для vector
Как реализовать шаблонную функцию для vector

Перевод целых и дробных чисел из 16-ой системы счисления в 10-ую
Нужно написать программу перевода чисел из 16-ой системы счисления в 10-ую...

Написать программу перевода целых и дробных чисел ...
Здравствуйте. Необходимо составить текст программы по данному заданию Поиск...

Шаблонная функция для побайтового сдвига
Добрый день. Есть функция для побайтового сдвига для элементов из...

5
Avazart
Эксперт С++
7685 / 5594 / 543
Регистрация: 10.12.2010
Сообщений: 25,077
Записей в блоге: 17
10.11.2013, 19:10 #2
Цитата Сообщение от memor1s Посмотреть сообщение
Читать через getline нет возможности т.к. функция шаблонная.
Специализировать шаблон и применить getline()
1
memor1s
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 6
10.11.2013, 19:23  [ТС] #3
Цитата Сообщение от Avazart Посмотреть сообщение
Специализировать шаблон и применить getline()
И нет никакой возможности заставить >> игнорировать пробелы при считывании строки? Числа в файле записываются в столбик.
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,211
Завершенные тесты: 3
10.11.2013, 19:29 #4
Цитата Сообщение от memor1s Посмотреть сообщение
И нет никакой возможности заставить >> игнорировать пробелы при считывании строки?
Есть (locale, istream::getloc, istream::imbue), но шаблон специализировать будет проще.
1
memor1s
0 / 0 / 0
Регистрация: 13.11.2012
Сообщений: 6
10.11.2013, 20:22  [ТС] #5
Цитата Сообщение от Somebody Посмотреть сообщение
шаблон специализировать
Это значит создать функцию отдельно для строк?
0
EVP
489 / 257 / 57
Регистрация: 14.12.2010
Сообщений: 515
10.11.2013, 22:23 #6
Цитата Сообщение от memor1s Посмотреть сообщение
Читать через getline нет возможности т.к. функция шаблонная.
Вообще-то есть: нужно определить оператор >> для std::istream и std::string.
Перед определением твоего шаблона помести этот оператор:
C++
1
2
3
4
inline void operator>>(istream& _is, string& _value)
{
    getline(_is, _value);
}
Ранее тебе советовали другой вариант решения: сделать специализацию твоего шаблона:
C++
1
2
3
4
5
6
7
template <>
void LoadFromFile<string>(char* filename, vector<string>& input)
{
  ..
  //используешь getline();
  ..
}
Но тут частичное дублирования кода, что не очень хорошо.
1
10.11.2013, 22:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 22:23
Привет! Вот еще темы с решениями:

Шаблонная функция для двумерного массива
Всем дорого здравия! Насколько безопасно использовать такую функция и для...

Написать шаблоны функций для для вычисления суммы произведений двух соседних чисел для трех целых чисел и в одномерном массиве целых чисел
Написать шаблоны функций для для вычисления суммы произведений двух соседних...

Шаблонная функция для инициализации двумерного массива
Вот так можно сделать функцию для иниц. двумерного массива типа int. int**...

Шаблонная функция вывода для любого stl контейнера
Шаблонная функция вывода для любого STL-контейнера, где в качестве параметра...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru