C++ 字符串内存被覆盖了吗?
使用此代码:C++ 字符串内存被覆盖了吗?,c++,stdstring,C++,Stdstring,使用此代码: std::string create_bc( std::string current_bk, std::string local_isin, std::string local_fininfo, std::string local_ccy, std::string local_ri
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;
当“+=”将dev_cod作为右操作数时,似乎有一些内存被覆盖。由于某种原因,+=的右操作数写在字符串的开头
我还想知道cout,所以我尝试在所有地方添加一些std::flush。但这并没有让事情变得更好
编辑
只是没人问而已。只有一个线程…:)
@Angew谢谢==>应用了dos2unix,问题解决了。
关闭
local_fininfo是windows csv文件的第行。然后,在我的十六进制编辑器中,本地fininfo以0D0A结束
因此,确实有一个回车,我无法通过单独打印本地fininfo看到。在
local\u fininfo
中有一个回车,在local\u fininfo
中有一个回车,在其中一个字符串中似乎有一个回车
字符,在输出过程中对其进行解释。可能某个Windows样式的文件被解析为某个Unix样式的文件。在其中一个字符串中似乎有一个回车
字符,它在输出过程中被解释。可能某个Windows样式的文件正在被解析为Unix样式的文件。是否有一个字符串包含<代码>回车符代码>字符?您应该提供一个完整的独立测试用例,人们可以自己获取、编译和查看。还可以调试字符串的长度。它还将取消隐藏可能的回车。我确信没有字符串内存被覆盖,但控制台的输出有问题。如果这些字符串来自输入,可能是Windows样式的文件被解析为Unix样式的文件。其中一个字符串是否有可能包含回车
字符?您应该提供一个完整的独立测试用例,人们可以自己获取、编译和查看。还可以调试字符串的长度。它还将取消隐藏可能的回车。我确信没有字符串内存被覆盖,但控制台的输出有问题。如果这些字符串来自输入,则可能是Windows样式的文件被解析为Unix样式的文件。不,我单独打印了它。不,有回程车。我无法在单独的可执行文件中重现该问题。。。我一直在尝试。不,我是分开打印的。不,有回程车。我无法在单独的可执行文件中重现该问题。。。我一直在努力。
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