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

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

Войти
Регистрация
Восстановить пароль
 
beathoven
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 28
#1

Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр - C++

10.06.2014, 19:10. Просмотров 214. Ответов 3
Метки нет (Все метки)

Хотел бы обратиться к аудитории этого сайта с данной проблемой-в программе, которую я написал, не выполняется одно условие-не проверяется заглавная буква(а так как рассматривается литературное произведение, заглавные буквы обязательны). Так вот, я не могу понять, как бы это сделать. Есть идеи копировать строчку, привести её в нижний регистр, проверить и на выходе уже восстановить все регистры.


Вот собственно задача:
Входной текстовый файл содержит отрывок литературного произведения. Необходимо сформировать выходной файл по следующему принципу: после каждого слова w1 входного файла необходимо через пробел вставить слово w2, оставив весь остальной текст без изменения. Данные слова можно вводить с клавиатуры.

Вот код программы:
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
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    ifstream inp("input.txt");
    ofstream out("output.txt");
    string s, w1, w2;
    cout << "Enter word 1: ";
    cin >> w1;
    cout << "Enter word 2: ";
    cin >> w2;
    w1.insert(0, " "); //пробел перед w1
    int n = w1.size();
    unsigned int pos = 0;
    do
    {
        getline(inp, s);
        s.append(" "); //пробел в начало и конец s
        s.insert(0, " ");
        int slength = s.length();
        while (pos < s.length()) //пока не конец s, ищет w1
        {
            pos = s.find(w1, pos);
            if (pos != string::npos)
            {
                s.insert(pos+n, " "+w2);
                pos++;
            }
        }
        pos = 0;
        s.erase(0, 1); //удаляет пробел перед s
        out << s << endl;
    }
    while(!inp.eof());
    cout << "see results in output file" << endl;
    return 0;
}


Большая просьба-если у вас есть идеи по реализации проверки верхнего регистра, записать это в код. Потому что мозги уже, к сожалению, не варят...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 19:10     Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр
Посмотрите здесь:

перевод строки в верхний регистр C++
C++ Работа с файловыми потоками в С++.
Верхний регистр символа C++
Строки в С++. Верхний и нижний регистр C++
Верхний регистр в файле C++
C++ Верхний и нижний регистр
C++ Работа с файловыми потоками
C++ Преобразование в верхний регистр
Работа с файловыми потоками. Считать информацию C++
C++ Работа с файловыми потоками
Переведите символ в верхний регистр C++
C++ В верхний регистр

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
10.06.2014, 19:38     Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр #2
beathoven, ну на сколько я понял, нужно сравнивать строки без учета регистра. Ну самое простое преобразовать обе к одному регистру и сравнить.
beathoven
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 28
10.06.2014, 20:48  [ТС]     Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр #3
Цитата Сообщение от _script_ Посмотреть сообщение
beathoven, ну на сколько я понял, нужно сравнивать строки без учета регистра. Ну самое простое преобразовать обе к одному регистру и сравнить.
Цитата Сообщение от _script_ Посмотреть сообщение
ну на сколько я понял, нужно сравнивать строки без учета регистра. Ну самое простое преобразовать обе к одному регистру и сравнить.
Вот смотри, что получается:
Мы, допустим, вводим фразу "Abs efgl abs sefl abs". Хотим, чтобы после "abs" у нас вставилось "asdf". Но на выходе у нас получается "Abs efgl abs asdf sefl abs asdf". Вот нужно что-то сделать с "Abs", а что, я ума не приложу, ей Богу.
_script_
169 / 137 / 34
Регистрация: 01.05.2012
Сообщений: 414
10.06.2014, 21:09     Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр #4
beathoven, tolower преобразовывает в нижний регистр
Yandex
Объявления
10.06.2014, 21:09     Работа с файловыми потоками. Выполнить проверку в готовом коде на верхний регистр
Ответ Создать тему
Опции темы

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