![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
ammaximus |
![]()
Сообщение
#1
|
![]() Ночной волк ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Репутация: ![]() ![]() ![]() |
Программа должна копировать содержимое одного файла в дркгой с удалением пробелов. Чтение буферизовано по 5 символов.
#include <iostream.h> Еще надо отработать все возможные ошибки -------------------- Не думай о белой обезьяне.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата проблема со сравнением Еще бы, ты пытаешься сравнить символ (char, тот же int, только в профиль) с " ", то есть, со строкой... Сравнивай с символом (в апострофах), проблемы не будет:while(!vvod.eof()) {В таком случае, правда, тебе будет проще описать переменную buffer как char, а не как char[5], поскольку буферизацией тут и не пахнет. Если же ты попытаешься читать 5 символов сразу в buffer, подумай над тем, что произойдет, если число символов в исходном файле будет НЕ кратно 5... Хотя я бы сделал совсем по-другому: читал бы файл source.txt построчно (в std::string), потом из строки удалял бы все пробелы, и записывал строку в выходной файл. |
ammaximus |
![]()
Сообщение
#3
|
![]() Ночной волк ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Репутация: ![]() ![]() ![]() |
vivod.write(reinterpret_cast<char *>(&buffer[0]), 1); // приведение типа, иначе будет ошибка Можно разжевать эту строчку? Цитата Хотя я бы сделал совсем по-другому: читал бы файл source.txt построчно (в std::string), потом из строки удалял бы все пробелы, и записывал строку в выходной файл. Покажи. Я только начал учить язык. -------------------- Не думай о белой обезьяне.
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Можно разжевать эту строчку? из этой строки можно убрать приведение типа... У тебя же buffer описывается, как массив char-ов, в этом случае взятие адреса первого элемента возвращает правильный тип, (char *). Я просто перестраховался, на случай, если buffer будет другого типа (например, массив double-ов), тогда тоже можно передать этот буфер в метод write, но для этого надо заставить компилятор рассматривать указатель, как (char *), это делается с помощью конструкцииreinterpret_cast<к_какому_типу_приводим>(что_приводим). А со строкой делается вот так: #include <iostream> |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 10:30 |