Преобразование из std::string в SAString

Я использую SQLAPI++ для вставки значений в базу данных SQL, я пытаюсь извлечь действия из шахматных игр и вставить их в виде строки в таблицу действий в базе данных, например, (action_id=1, action_name=e4). вот мой код:

int main()
{
    SAConnection con;
    SACommand cmd;
    try
    {
        con.Connect("test","tester","tester", SA_SQLServer_Client);
        cmd.setConnection(&con);
        std::ifstream pgnfile("sample.pgn");
        pgn::GameCollection games;
        pgnfile >> games;
        for(pgn::GameCollection::iterator itr=games.begin();itr!=games.end();itr++)
        {
            pgn::Game game = *itr;
            pgn::MoveList move_list=game.moves();
            for(pgn::MoveList::iterator itr2=move_list.begin();itr2!=move_list.end();itr2++)
            {
                pgn::Move move=*itr2;
                cmd.setCommandText("insert into actions (action_id,action_name) values (:1,:2)");
                cmd.Param(1).setAsLong() = 1;
                cmd.Param(2).setAsString() = move.black().str(); // the line that cause the error

             }
        }
    }       
}

проблема в этой строке:

cmd.Param(2).setAsString() = move.black().str();

он не может конвертировать из std:: string в SAString! так что вы можете сказать мне, как сделать это преобразование из std:: string в SAString?

1 ответ

Решение

Я не знаю твои особенности SAString класс, но я считаю, что можно создать такой строковый объект из C-стиля const char* строка (например, например SAString("Connie")).

Учитывая std::string Вы можете назвать его c_str метод, чтобы получить такую ​​строку в стиле C, которая, вероятно, может быть использована для создания вашего SAString,

Итак, в вашей последовательности вызовов методов:

 ... = move.black().str();

Если предположить, str возвращает std::stringЯ бы добавил звонок c_str:

... = move.black().str().c_str();
Другие вопросы по тегам