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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разбор строки с токенами win32 оконное 
:(
    Опции темы
Andrej78
Дата 7.2.2011, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток.
Вот такая проблемка появилась, подскажите плз.

в оконном приложении win32 на c++ vs2005 пытаюсь написать ф-ию, читающую файл с параметрами.
когда дохожу до разбора строки (пытаюсь выдернуть токен из строки), если добавляю метод string::length(), 
то прога компилируется нормально, но при выполнении выдает ошибку отладчика Debug Assertion Failed    dst!=NULL в файле memcpy_s.c стр. 55.

подскажите плз в чем ошибка, как нормально сделать обработку строк и где можно прочитать об обработке строк подробно с примерами?

Код

#include "stdafx.h"
#include "ttt.h"
#include <cstring>
//#include <wchar_t>
#include <cwchar>    //с++ версия стандартного заголовка С <wchar.h>
#include <fstream>
#include <iostream>
using namespace std;

string classcode[50],    //справочник кодов классов
       seccode[500];    //справочник тикеров
......

void ReadParams(char *cFile, char delim)    
{
    fstream in(cFile, ios::in);    //поток для чтения
    const int sizeBuf=500;
    char buf[sizeBuf];//, tmpstr[sizeBuf];
    string s,tmp;
    size_t n=0,n1=0,len=0;    //n  - начало токена. n1-конец токена
    int t=0;    //номер первой чистой строки в справочнике

    if (in.is_open()){
        //читаю коды классов
        in.getline(buf,sizeBuf-1);
        s=buf;    
        n1=s.find(delim,0);
        len=s.length();
        while (n1 < len){
            classcode[t++].assign(s,n,n1);
            n=n1;
            n1=s.find(delim,n1);
        }
    }//if (in.is_open()){
    in.close();
}//void ReadParams(char *cFile, char delim)


Вот если эту строку убрать, то включается нормально
len=s.length();


Это сообщение отредактировал(а) Andrej78 - 7.2.2011, 18:15
PM MAIL   Вверх
Andrej78
Дата 7.2.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вопрос снимаю. 

похоже ошибка была здесь:     classcode[t++].assign(s,n,n1);   (3й аргумент длина подстроки)


Это сообщение отредактировал(а) Andrej78 - 7.2.2011, 18:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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