このコードで:
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 だけを出力しても確認できないキャリッジ リターンが実際にありました。