我正在使用SQLAPI ++将值插入到我的SQL数据库中,试图从象棋游戏中提取 Action 并将其作为字符串插入到数据库的 Action 表中,就像这样(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吗?

最佳答案

我不知道您的特定SAString类,但我认为应该可以从C风格的const char*字符串(例如SAString("Connie"))构造这样的字符串对象。

给定一个std::string,您可以调用它的c_str方法来获得这种C风格的字符串,该字符串可以用来构造SAString

因此,在您的方法调用序列中:



假设str返回std::string,我将添加一个对c_str的调用:

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

关于c++ - 从std::string转换为SAString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40331523/

10-11 17:20