Строки std::string
От: akella-pro  
Дата: 01.08.06 11:40
Оценка:
Здравствуйте уважаемые!
Есть функция копирующая текст до символа->>>

int CopyStrToKey(std::string& rStr, const char pCKey,std::string& rBuff)
{
if(rStr.length()==0)
return 0;
unsigned int i;

for(i=0;i<rStr.length();i++)
if(rStr.at(i)==pCKey) break;

if(i==rStr.length()) return 0;
rBuff=rStr.substr(0,i);
return i;
}

потом мы ее используем ->>>

bool AnlzInStrMac(std::string& InStr)
{
int count;
std::string TempStr,TempInStr;
TempInStr=InStr;
count=CopyStrToKey(TempInStr,';',TempStr);
TempInStr=любое присваивание
..................................
}

Переменной TempInStr можно присваивать что угодно она бутет принимать значение "uster.log"
Помогите разобраться в чем косяк.. Всю голову уже сломал... Заранее спасибо!!!
Re: Строки std::string
От: Bell Россия  
Дата: 01.08.06 11:53
Оценка:
Здравствуйте, akella-pro, Вы писали:

AP>Здравствуйте уважаемые!

AP>Есть функция копирующая текст до символа->>>

AP>int CopyStrToKey(std::string& rStr, const char pCKey,std::string& rBuff)

AP>{
AP> if(rStr.length()==0)
AP> return 0;
AP> unsigned int i;

AP> for(i=0;i<rStr.length();i++)

AP> if(rStr.at(i)==pCKey) break;

AP> if(i==rStr.length()) return 0;

AP> rBuff=rStr.substr(0,i);
AP> return i;
AP>}

AP>потом мы ее используем ->>>


AP>bool AnlzInStrMac(std::string& InStr)

AP>{
AP> int count;
AP> std::string TempStr,TempInStr;
AP> TempInStr=InStr;
AP> count=CopyStrToKey(TempInStr,';',TempStr);
AP> TempInStr=любое присваивание
AP>..................................
AP>}

AP>Переменной TempInStr можно присваивать что угодно она бутет принимать значение "uster.log"

AP>Помогите разобраться в чем косяк.. Всю голову уже сломал... Заранее спасибо!!!

Это значение наблюдается в отладчике? Если это так, и речь о STL из VC7, то дело может быть в том, что string хранит короткие строки во внутреннем буфере (и тогда содержимое в отладчике отображается правильно), а длинные — во внешнем блоке, при этом отладчик, как правило, показывает то, что осталось во внутреннем буфере, т.е. ерунду.
Любите книгу — источник знаний (с) М.Горький
Re: Строки std::string
От: Testus  
Дата: 01.08.06 12:46
Оценка:
Здравствуйте, akella-pro, Вы писали:

AP>Здравствуйте уважаемые!

AP>Есть функция копирующая текст до символа->>>

AP>int CopyStrToKey(std::string& rStr, const char pCKey,std::string& rBuff)

AP>{
AP> if(rStr.length()==0)
AP> return 0;
AP> unsigned int i;

AP> for(i=0;i<rStr.length();i++)

AP> if(rStr.at(i)==pCKey) break;

AP> if(i==rStr.length()) return 0;

AP> rBuff=rStr.substr(0,i);
AP> return i;
AP>}

вообще говоря у std::string есть метод find и rfind которые облегачют поиск

AP>потом мы ее используем ->>>


AP>bool AnlzInStrMac(std::string& InStr)

AP>{
AP> int count;
AP> std::string TempStr,TempInStr;
AP> TempInStr=InStr;
AP> count=CopyStrToKey(TempInStr,';',TempStr);
AP> TempInStr=любое присваивание
AP>..................................
AP>}

AP>Переменной TempInStr можно присваивать что угодно она бутет принимать значение "uster.log"

AP>Помогите разобраться в чем косяк.. Всю голову уже сломал... Заранее спасибо!!!

хм у меня всё нормально отработало. Или ты не полный кусок привёл или чтото не то делаешь.
Glück auf
Re: Строки std::string
От: Kapone Украина  
Дата: 01.08.06 13:26
Оценка:
Здравствуйте, akella-pro, Вы писали:

Подсказка не по теме: если используешь внутреннюю переменную unsigned int i, то наверно и возвращать нужно unsigned...
А по поводу кода — у меня заработало..
давай остальной
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Строки std::string
От: akella-pro  
Дата: 02.08.06 04:26
Оценка:
B>Это значение наблюдается в отладчике? Если это так, и речь о STL из VC7, то дело может быть в том, что string хранит короткие строки во внутреннем буфере (и тогда содержимое в отладчике отображается правильно), а длинные — во внешнем блоке, при этом отладчик, как правило, показывает то, что осталось во внутреннем буфере, т.е. ерунду.

Блин точно! Спасибо за подсказку.. Показывает всякую фигню в отладчике, а на cout вывел то что надо...
Re[2]: Строки std::string
От: akella-pro  
Дата: 02.08.06 04:28
Оценка:
T>вообще говоря у std::string есть метод find и rfind которые облегачют поиск

И за это спасибо.. в STL человек я новый и чего то по методам объектов как то инфы нигде не нарыть....
Re[2]: Строки std::string
От: akella-pro  
Дата: 02.08.06 04:29
Оценка:
Здравствуйте, Kapone, Вы писали:

K>Здравствуйте, akella-pro, Вы писали:


K>Подсказка не по теме: если используешь внутреннюю переменную unsigned int i, то наверно и возвращать нужно unsigned...

K>А по поводу кода — у меня заработало..
K>давай остальной

Эхх и у меня заработало...
Косяк в не полном знании предмета!
По поводу unsigned int Спа! Исправил!
Re[3]: Строки std::string
От: LaptevVV Россия  
Дата: 02.08.06 10:44
Оценка:
Здравствуйте, akella-pro, Вы писали:


T>>вообще говоря у std::string есть метод find и rfind которые облегачют поиск


AP>И за это спасибо.. в STL человек я новый и чего то по методам объектов как то инфы нигде не нарыть....

1. В MSDN — много инфы...
2. В Борлпндовском хелпе много инфы...
3. Здест на сайте есть рецензии не менее 7 книжек по STL, изданных на русском...
Лучшая — книжка Джосаттиса (Джосьютиса)...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.