使用此代码:
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。但它并没有让事情变得更好。
修改
就这样没有人问道。只有一个线程...... :)
@Angew thanks ==&gt;应用dos2unix,问题解决了。 关闭
local_fininfo是windows csv文件的行。然后本地fininfo在我的十六进制编辑器中以0D0A结束。
所以确实有一个单独打印本地fininfo后无法看到的回车。
答案 0 :(得分:2)
似乎其中一个字符串中有一个carriage-return
字符,在输出过程中会被解释。也许Windows风格的文件在某处被解析为Unix风格的文件。
答案 1 :(得分:1)
local_fininfo
中有回车符。