257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
1

Не работает замена символов в файле на нижний регистр

05.07.2016, 13:26. Показов 1296. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему не работает код?
По идее должен символы в файле заменить на нижний регистр.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() {
 
    string way = "Example.txt";
    fstream text;
    text.open(way, ios_base::in | ios_base::out);
    while (!text.eof()) {
        char a;
        a = text.get();
        a = tolower(a);
        text.seekp(-1, ios::cur);
        text << a;
    }
    text.close();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2016, 13:26
Ответы с готовыми решениями:

Преобразование символов в нижний регистр
Добрый день. Имеется функция toUpper(char in, char out), которая преобразует массив in в верхний...

Перевод символов в нижний регистр
Имеется код: ; Presumably, ES and DS have been set up to point at the same ; segment, the one...

Перевод символов в нижний регистр
Немного не в тему, но почему не удается перевести в нижний регистр символы таким образом? for(int...

TStringList и перевод символов в нижний регистр
Добрый день. В программе для хранения и обработки текстов используется ПЕРЕМ типа TStringList Для...

16
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
05.07.2016, 13:39 2
Код корректен, попробуйте проверить открылся ли файл.
C++
1
2
3
    if(!text.is_open()){
        cout << "Error" << endl;
    }
1
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
05.07.2016, 13:41  [ТС] 3
DarkVortex, Все правильно, но в Visual studio 15 не запускается
0
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
05.07.2016, 13:42 4
shilko2013, в этом я вам помочь не могу к сожалению. Но рекомендую скопировать ошибку из студии.
1
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
05.07.2016, 13:44  [ТС] 5
для ошибок есть поток cerr

Добавлено через 1 минуту
на экране бесконечно пишет -1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() {
    string way = "Example.txt";
    fstream text;
    text.open(way, ios_base::in | ios_base::out);
    while (!text.eof()) {
        char a;
        a = text.get();
        a = tolower(a);
        cout << text.tellg();
        text.seekg(-1, ios::cur);
        text << a;
    }
    text.close();
    return 0;
}
0
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
05.07.2016, 13:46 6
Лучший ответ Сообщение было отмечено shilko2013 как решение

Решение

shilko2013,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() {
    string way = "Example.txt";
    fstream text;
    text.open(way, ios_base::in | ios_base::out);
    if(!text.is_open()){
        cout << "Error!" << endl;
        return 0;
    }
    while (!text.eof()) {
        char a;
        a = text.get();
        a = tolower(a);
        cout << text.tellg();
        text.seekg(-1, ios::cur);
        text << a;
    }
    text.close();
    return 0;
}
Проверяйте открылся ли файл, если не открылся вы получите бесконечный цикл
1
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
05.07.2016, 13:48  [ТС] 7
DarkVortex, Я же говорю открылся
0
Хитрая блондиночка $)
1470 / 985 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
05.07.2016, 13:48 8
А не проще считать весь файл в массив, его обработать и так же полностью массивом и записать?
1
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
05.07.2016, 13:50  [ТС] 9
Программа завершается удачно, но файл не изменяется.

Добавлено через 19 секунд
Hikari, Проще, но мне хочется и так попробовать

Добавлено через 37 секунд
И в компиляторе на андроиде у меня все работает, а в визуал - нет
0
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
05.07.2016, 13:56 10
C++
1
2
3
4
5
6
7
8
    while (!text.eof()) {
        char a;
        a = text.get();
        a = tolower(a);
        cout << text.tellg();
        text.seekp(-1, ios::cur);
        text << a;
    }
text.seekp и text.seekg имеют разный эффект
1
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
05.07.2016, 15:31  [ТС] 11
DarkVortex, и так и так не работает

Добавлено через 4 минуты
Проблема решена, неверная кодировка.
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.07.2016, 15:31 12
Цитата Сообщение от DarkVortex Посмотреть сообщение
text.seekp и text.seekg имеют разный эффект
Где вы такое прочитали?
1
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
05.07.2016, 15:39 13
avgoor, в доках...seekp работает с put потоком, seekg c get
1
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.07.2016, 16:13 14
Цитата Сообщение от DarkVortex Посмотреть сообщение
в доках...seekp работает с put потоком, seekg c get
Несомненно. Но, где вы прочитали, что для файлового ввода/вывода:
Цитата Сообщение от DarkVortex Посмотреть сообщение
text.seekp и text.seekg имеют разный эффект
0
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
05.07.2016, 16:24 15
В 5 сообщении автор явно перепутал seekg и seekp в результате чего его цикл был бы бесконечным(не тот курсор двигал) на что я и хотел указать. Извините что не совсем корректно выразил свой посыл.
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.07.2016, 16:26 16
Цитата Сообщение от DarkVortex Посмотреть сообщение
не тот курсор двигал
В файле не может быть "не того" курсора. Он там один. И seekg и seekp двигают "один и тот же курсор" вызывая rdbuf()->pubseekoff(off, dir, ios_base::in), который, за счет ромбовидного наследования, у них один.
0
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
07.07.2016, 15:33  [ТС] 17
DarkVortex, Разницы правда нету никакой, я эксперементировал.
Вызывай tellg и tellp и посмотри)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2016, 15:33
Помогаю со студенческими работами здесь

Перевод символов в нижний регистр в WORD
Нужно символ слова изменить на нижний регистр. Как это реализовать программно. Заранее благодарен

)Упростить программу перевода введенных символов в нижний регистр
Есть рабочая программа на Tasm. Нужно упростить. Помогите кодом) .model small .data ; В этом...

Программу, использующую цикл для преобразования символов в нижний регистр
Добрый вечер. Не могу найти ошибку в программе. Подскажите пожалуйста в чем проблема. #include...

Замена регистра символов в предложении с верхнего на нижний через один
Как сделать так,чтобы программа меняла регистр предложений с верхнего на нижний через один?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru