1

このコードで:

std::string create_bc( std::string   current_bk,
                       std::string   local_isin,
                       std::string   local_fininfo,
                       std::string   local_ccy,
                       std::string   local_ric,
                       QSqlDatabase* db)
{
    std::string req;
    req.reserve(1024);

    req = "dbo.create_bsk_constituent @bk_cod=";
    std::cout << req << std::endl;
    req += current_bk;
    std::cout << req << std::endl;
    req += " , @ISIN= ";
    std::cout << req << std::endl;
    req += local_isin;
    std::cout << req << std::endl;
    req += " , @FININFO= ";
    std::cout << req << std::endl;
    req += local_fininfo;
    std::cout << req << std::endl;
    req += " , @dev_cod= ";
    std::cout << req << std::endl;
    req += local_ccy;
    std::cout << req << std::endl;

私はこの出力を得ました:

dbo.create_bsk_constituent @bk_cod=
dbo.create_bsk_constituent @bk_cod=bk11
dbo.create_bsk_constituent @bk_cod=bk11 , @ISIN=
dbo.create_bsk_constituent @bk_cod=bk11 , @ISIN= EU0009658145
dbo.create_bsk_constituent @bk_cod=bk11 , @ISIN= EU0009658145 , @FININFO=
dbo.create_bsk_constituent @bk_cod=bk11 , @ISIN= EU0009658145 , @FININFO= 22
 , @dev_cod= k_constituent @bk_cod=bk11 , @ISIN= EU0009658145 , @FININFO= 22
 , @dev_cod= EURonstituent @bk_cod=bk11 , @ISIN= EU0009658145 , @FININFO= 22

「+=」の右オペランドが dev_cod の場合、一部のメモリが上書きされるようです。なぜか文字列の先頭に += の右オペランドが書かれている…

cout についても疑問に思ったので、どこにでも std::flush を追加しようとしました。しかし、それは物事を良くしませんでした。

編集

誰も尋ねないように。スレッドは 1 つだけです... :)

@Angewありがとう ==> dos2unix を適用し、問題は解決しました。 近い

local_fininfo は、Windows csv ファイルの行の en です。次に、ローカルの fininfo は、16 進エディターで 0D0A になります。

そのため、ローカルの fininfo だけを出力しても確認できないキャリッジ リターンが実際にありました。

4

2 に答える 2