URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1236
[ Назад ]

Исходное сообщение
"Конвертация string в char ?????"

Отправлено AlexT , 28-Дек-02 15:01 
Первым делом поздравляю всех с наступающим!
Люди возникла такая проблема есть цикл:
while (is.get(ch)) //Читаем из файла
    {
     string a = "insert into ATSlog(log) values(\"";
     if ( ch != '\n' )//собираем строку....
      {               //пробовал getline
         str += ch;   //все то же самое
      }               //
       else
      {
         a += str;//собираем запрос
         a += c;  //----------
         char *ab = new char [a.size()];// выделяем место под массив char
         strcpy(ab, a.data()); //string в char ???
                               //
                               //

         if (mysql_query(&mysql,ab))
            {
              cout<<"Er1\n";
              exiterr(3);
            }
            str = "";
            delete[]  ab;
            a="";
        }
    }  
Суть в следующем: из файла постоянно читается информация,
потом она вставляется в mysql запрос, происходит это следующим образом
есть первая часть запроса к ней плюсуется информация из файла и плюс
третья часть которая закрывает запрос. Потом (т.к. этот запрос типа string ) все конвертируется в char "strcpy(ab, a.data()); ", вставляется в запрос и он идет на исполнение.
Проблема заключается в следующем: при первом прохождении цикла все проходит хорошо, запрос собирается и исполняется запись в базу тоже происходит, НО на втором проходе запрос НЕ собирается т.е. берется только первая его часть (хотя проверяли ... есть все части) а остальное каким то образом обрубается?!
Вопрос простой :) ПОЧЕМУ??? Ведь логично подумать если первый раз прошел то и второй пройдет.....или нет??!!    
Жду ваших советов и предложений...


Содержание

Сообщения в этом обсуждении
"RE: Конвертация string в char ?????"
Отправлено AlexT , 30-Дек-02 09:26 

>Жду ваших советов и предложений...

Что никто не знает? Или слушком простой вопрос что в лом ответить?
Я забыл сказать что данные идут с сом порта и уже выяснил что от туда проскакивает какой то символ (толи конец строки то ли еще что то) но вот какой? и как его обрубить?


"RE: Конвертация string в char ?????"
Отправлено J , 30-Дек-02 22:38 
>
>>Жду ваших советов и предложений...
>
>Что никто не знает? Или слушком простой вопрос что в лом ответить?
>
>Я забыл сказать что данные идут с сом порта и уже выяснил
>что от туда проскакивает какой то символ (толи конец строки то
>ли еще что то) но вот какой? и как его обрубить?
>
могу сказать, что у меня mesql работал без проблем
но у меня был чиста С
может, везде syslog или printf натыкать?
скорее всего с буфером проблемы, но в С++ с отлавливанием ошибок проблемы


"RE: Конвертация string в char ?????"
Отправлено XMan , 31-Дек-02 16:54 
Незнаю, как насчет обрубания, но если "a.size()" - это аналог "strlen(char *)", то я бы в выделении памяти ставил "[a.size()+1]" всместо "[a.size()]", потому как последний нолик (ограничитель строки ASCII) вылезет за пределы твоего "char *ab". Возможно, в этом и проблема.

"RE: Конвертация string в char ?????"
Отправлено AlexT , 03-Янв-03 11:21 
>Незнаю, как насчет обрубания, но если "a.size()" - это аналог "strlen(char *)",
>то я бы в выделении памяти ставил "[a.size()+1]" всместо "[a.size()]", потому
>как последний нолик (ограничитель строки ASCII) вылезет за пределы твоего "char
>*ab". Возможно, в этом и проблема.

Спасибо проблема уже решена :)
Надо было просто последние символы обрубать и '\n' и '\0'
они делали перевод строки и запрос не складывался :)


"RE: Конвертация string в char ?????"
Отправлено Bizon , 08-Янв-03 11:30 
>>Незнаю, как насчет обрубания, но если "a.size()" - это аналог "strlen(char *)",
>>то я бы в выделении памяти ставил "[a.size()+1]" всместо "[a.size()]", потому
>>как последний нолик (ограничитель строки ASCII) вылезет за пределы твоего "char
>>*ab". Возможно, в этом и проблема.
>
>Спасибо проблема уже решена :)
>Надо было просто последние символы обрубать и '\n' и '\0'
>они делали перевод строки и запрос не складывался :)

странный код
а зачем тебе так необходимо из стринга char* делать??


"RE: Конвертация string в char ?????"
Отправлено AlexT , 08-Янв-03 18:12 
>странный код
>а зачем тебе так необходимо из стринга char* делать??

это я собираю запрос для mysql в него надо вставлять данные а это
проще делать со строками, а конвертировать в чар надо т.к. запрос может быть тока  чар* остальное не проходит :(

Но на самом деле все уже сделано....  :)
И между прочим работает!



"RE: Конвертация string в char ?????"
Отправлено Bizon , 09-Янв-03 11:22 
>>странный код
>>а зачем тебе так необходимо из стринга char* делать??
>
>это я собираю запрос для mysql в него надо вставлять данные а
>это
>проще делать со строками, а конвертировать в чар надо т.к. запрос может
>быть тока  чар* остальное не проходит :(
>
>Но на самом деле все уже сделано....  :)
>И между прочим работает!


ну работать то работает но естетики ни какой:)
почему бы не сделать так:
mysql_query(&mysql,a.c_str()) ???
ну в крайнем случае mysql_query(&mysql,(char *)a.c_str())


"RE: Конвертация string в char ?????"
Отправлено AlexT , 12-Янв-03 22:35 
>ну работать то работает но естетики ни какой:)
>почему бы не сделать так:
>mysql_query(&mysql,a.c_str()) ???
>ну в крайнем случае mysql_query(&mysql,(char *)a.c_str())

спасибо попробую.
Просто я недавно тока начал писать и многое еще
приходиться выдумывать на ходу а потом уже если получится
приводить в божеский вид  :)