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 。但这并没有让事情变得更好。

编辑

就这样没人问。只有一个线程... :)

@Angew谢谢==> 应用了dos2unix,问题就解决了。

local_fininfo 是 windows csv 文件的行的 en。然后本地 fininfo 在我的十六进制编辑器中以 0D0A 结束。

所以确实有一个回车,我无法通过单独打印本地 fininfo 看到。

4

2 回答 2

3

似乎其中一个carriage-return字符串中有一个字符,在输出过程中会被解释。也许 Windows 风格的文件在某处被解析为 Unix 风格的文件。

于 2013-10-21T14:24:26.510 回答
1

中有回车符local_fininfo

于 2013-10-21T14:11:11.793 回答