Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление ненужных символов, ответиться поскорее... где-то я ошибаюсь 
V
    Опции темы
ZC1989
Дата 13.12.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 468
Регистрация: 17.7.2006
Где: Нижний Новгород; Россия

Репутация: нет
Всего: 1



Здрасть...

тема такая, есть буфер в котором хранится содержимое некоего файла, я его посимвольно перебираю и удаляю ненужные мне данные, так как пробел и табуляция, но вот с пробелом проблема почему-то '\n' игнорируется...


Код

char *CharComplicateLine(char *Original)
{
    char    *Result = new char[MAX_PATH];
    for(int Count = 0; Count < strlen(Original); ++Count)
    {
        if(Original[Count] == '\n') Result[Count] = ' ';
        else if(Original[Count] == '\t') Result[Count] = ' ';
        else Result[Count] = Original[Count];
    }
    Result[Count] = '\0';

    return Result;
}



--------------------
озарение настанет позже, когда поймём больше... (Сo. Stigmata)
PM MAIL ICQ   Вверх
HappyLife
Дата 13.12.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Я не понял что тебе нужно удалить...
Если пробелы, то как они могут исчезнуть, если ты \n - заменяешь пробелом и \t заменяешь пробелом..
\n - это перевод на другую строку.... А точнее в сочетании \r\n
PM MAIL   Вверх
Sartorius
Дата 13.12.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Как читаешь из файла? и если можно весь код покажи...
PM MAIL ICQ   Вверх
Xenon
Дата 13.12.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



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


--------------------
user posted image  
PM MAIL   Вверх
ZC1989
Дата 13.12.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 468
Регистрация: 17.7.2006
Где: Нижний Новгород; Россия

Репутация: нет
Всего: 1



мне нужно по сути из многострокового файла сдалть одну большую строку... а читаю я этот файл из архива в буфер


--------------------
озарение настанет позже, когда поймём больше... (Сo. Stigmata)
PM MAIL ICQ   Вверх
Sartorius
Дата 13.12.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



ZC1989, я спросил про функцию , которой ты это делаешь... покажи код.. \n не всегда остается после чтения. Он у тя в буффере есть? Посмотри под отладчиом
PM MAIL ICQ   Вверх
HappyLife
Дата 13.12.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



Тогда удаляй Cочетание \r\n
PM MAIL   Вверх
np9mi7
Дата 13.12.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 5
Всего: 10



Поскольку в исходном коде есть new, делаю вывод что это С++, вот в этом чудном языке есть такой алгоритм, называется он std::remove;


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Rockie
Дата 13.12.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

Репутация: 8
Всего: 31



Цитата(ZC1989 @  13.12.2006,  16:01 Найти цитируемый пост)
перебираю и удаляю ненужные мне данные, так как пробел и табуляция, но вот с пробелом проблема почему-то '\n' игнорируется...

ZC1989, а если кидать данные с помощью >> в какой-нибудь промежуточный буфер и из него уже в другой файл, или куда там нужно далье..? В поток будет сбрасываться все как раз без символов-разделителей.

иллюстрация:
Код
#include<iostream>
#include<fstream>

int main(){

 std::string buff;                // буфер

 std::fstream in("file.txt");
 // ..

 // на экран получаем последовательность без разделителей:
 while(in>>buff) std::cout<<buff;

 std::system("pause");
 return 0;
}


А если как в твоем примере, то надо проверять просто на '\0' 

Это сообщение отредактировал(а) Rockie - 13.12.2006, 17:25


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
codelord
Дата 13.12.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



попробуй заменить строку 

if(Original[Count] == '\n') Result[Count] = ' ';

на

if(Original[Count]==0x0D && Original[Count+1]==0x0A ) Result[Count] = ' ';


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
ZC1989
Дата 13.12.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 468
Регистрация: 17.7.2006
Где: Нижний Новгород; Россия

Репутация: нет
Всего: 1



Rockie, я ващет написал что данные из архива получаю... потом в стд передать нельзя...

а впринципе я со всем уже разобрался сам... пасиб за внимаение

Добавлено @ 17:25 
codelord, может у тебя компилятор на Visual C++, а у меня на  Result[Count] = ' '; (без содержимого) ругается


--------------------
озарение настанет позже, когда поймём больше... (Сo. Stigmata)
PM MAIL ICQ   Вверх
codelord
Дата 13.12.2006, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

Репутация: 1
Всего: 39



Result[Count] = 0x20;


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
ZC1989
Дата 13.12.2006, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 468
Регистрация: 17.7.2006
Где: Нижний Новгород; Россия

Репутация: нет
Всего: 1



codelord, замяли тему уже.... smile написал же, что разобрался и сделал всё как мне надо


--------------------
озарение настанет позже, когда поймём больше... (Сo. Stigmata)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1017 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.