Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
InferernumDeus
7 / 7 / 1
Регистрация: 13.08.2012
Сообщений: 250
#1

При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." - C++

10.01.2014, 08:35. Просмотров 400. Ответов 4
Метки нет (Все метки)

Подскажите, в чём может быть ошибка?
Процедура сама по себе работает правильно, а в таком виде нет.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <fstream>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////////////
 
T_str  get_initials(T_str s)
{
    struct  T_to_init
    {
        int  n_;
        T_to_init() : n_() {}
        T_str  operator()(const T_str&  word)
        {           
            return n_ > 2 ? "" : n_++ ? word.substr(0, 1) + '.' : word;            
        }
    };
    std::istringstream            ssin(s);  
    std::istream_iterator<T_str>  ssin_beg(ssin);
    std::istream_iterator<T_str>  ssin_end;
 
    std::ostringstream            sout;
    std::ostream_iterator<T_str>  sout_beg(sout, " ");
 
    std::transform(ssin_beg, ssin_end, sout_beg, T_to_init());
    return  sout.str();
}
 
void process(std::ifstream &instr)
{
 
}
 
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::string line;
    std::ifstream backstory ("fio.txt");
    std::ofstream out ("out.txt");
    if (backstory.is_open())
    {
        /*while (std::getline(backstory, line))
        {
            //std::getline(backstory,line);
            //std::cout << line << std::endl;
            process(line);
            //std::cout << line << std::endl;
        }
        backstory.close();*/
        T_str  s;
        for(;;)
        {
            //std::cout << std::endl
            //          << "FIO: ";
            (std::getline(backstory, s));
            //getline(std::cin << instr, s);
            if(s.empty()) break;
            out << get_initials(s);
            out << std::endl;
    }  
    }
    else
    {
        std::cout << "Unable to open file" << std::endl << std::endl;
    }
    
    std::string str;
    getline(std::cin, str);
}


Добавлено через 16 минут
Поправка.
Вместо букв "И" и "О" на выход всегда поступает символ �. В Notepad++ он отображается как "xD0"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 08:35     При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О."
Посмотрите здесь:
C++ Структура "Владелец автомобиля": - фамилия, имя, отчество; - номер автомобиля; - телефон; - номер техпаспорта. Удалить элемент с заданным номером, доб
Есть ли в структуре человек, чья фамилия начинается на букву "B". Найти ошибку C++
C++ Программа должна возвращать новый массив, состоящий из строк вида "И. Фамилия"
C++ Определить, имеется ли в заданном списке фамилия, начинающаяся с буквы "А" и состоящая из 6 букв
C++ если не составит труда(при вводе "n" должно создаваться предложение "Мне n год (года)")
C++ Описать шаблон класса АТД: "Участник очереди на печать издания: фамилия, телефон, количество страниц"
Как доказать, что при "а = b" на место "а" возвращается ссылка? C++
"Нарушение прав доступа при чтении "0x00000000"" C++
C++ Ввести фамилию, имя и отчество как одну строку, найти количество букв "a" в ней, а также длину фамилии и имени
C++ Класс "Фамилия"
В тех словах, которые окончиваются сочетанием букв "ть", заменить его окончание на "ил" C++
ткните мордой плз на описание конструкций типа defect?"brak":"goden" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 09:26     При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." #2
В файле что?
InferernumDeus
7 / 7 / 1
Регистрация: 13.08.2012
Сообщений: 250
10.01.2014, 10:16  [ТС]     При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." #3
Набор строк типа:
Иванов Иван Иванович
Сергеев Пётр Борисович
И так далее.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 10:36     При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." #4
У меня (10-я студия) нормально записывает в файл.

Добавлено через 4 минуты
ОС и среда какая?
InferernumDeus
7 / 7 / 1
Регистрация: 13.08.2012
Сообщений: 250
10.01.2014, 11:24  [ТС]     При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." #5
Теперь разобрался.
Проблема в том, что файл был в UTF-8, а не ANSI.
С ANSI работает нормально.
Благодарю.
Yandex
Объявления
10.01.2014, 11:24     При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О."
Ответ Создать тему
Опции темы

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