Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > квадраты в CAtlStringW


Автор: xaxaTyH 12.3.2008, 02:22
Надо прочитать данные из таблицы из файла .doc.

Делаю так:
Код
//Text in the cell
_bstr_t celltxt;

//...

//Перевожу BSTR->CString
CAtlStringW cwText(celltxt.GetBSTR());

//...
::MessageBoxW(NULL, (LPCWSTR)cwText, L"Test", MB_OK);
 

Проблема состоит в 2-х "квадратах" в конце любой строки, которую я читаю из файла. При печати этих строк, печатается текст и квадраты.

 Как их убрать?

Автор: korian 12.3.2008, 03:12
предпологаю, что "квадраты" это перевод строки.
просто убрать 2 последних символа из строки?

Автор: Rapalex 12.3.2008, 12:07
Посмотри коды этих символов.

Автор: xaxaTyH 12.3.2008, 13:01
Отбрасываю:
Код
cwText.Remove(L'\r');
cwText.Remove(L'\n');


Все равно остается 1 квадрат в конце и постоянно печатается..

Может как-то подругому отбрасывать надо?

Автор: xaxaTyH 12.3.2008, 13:30
Решил проблему так:
Код
cwText.Delete(_tcslen(cwText) - 2, 2);


Но теперь возник другой вопрос - насколько это эффективно? Эту операцию мне надо в цикле выполнять, для каждой таблицы, а в каждой таблице много ячеек.. Есть способ более эффективный?

Автор: korian 12.3.2008, 15:58
Цитата(xaxaTyH @  12.3.2008,  12:30 Найти цитируемый пост)
насколько это эффективно

а у CAtlStringW нету что-то типа Size или Length?
задумываться об эффективности, надо тогда, когда уже есть такая необходимость
(пока скорость обработки устраивает, думать об этом нет смысла)

Автор: xaxaTyH 12.3.2008, 16:29
korian, таких методов нету. Спасибо за ответы.

Автор: xaxaTyH 12.3.2008, 16:57
Как выяснилось, в программе в CAtlStringW cwText содержит квадраты не только в конце строки, но может и в начале, и в середине. Можно ли одной функцией(методом) убрать все квадраты в строке?

Пробовал метод Trim(L"\n\r") - не работает.

Автор: xaxaTyH 12.3.2008, 18:28
Избавляемся от всех "квадратов" в строке:
Код
cwText.Remove(0x09);
cwText.Remove(0x07);
cwText.Remove(0x0d);


Всем спасибо. Тема закрыта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)