gpt4 book ai didi

c++ - 这些天 'ends' 有什么用?

转载 作者:IT老高 更新时间:2023-10-28 22:39:04 30 4
gpt4 key购买 nike

几天前我遇到了一个微妙的错误,代码看起来像这样:

ostringstream ss;
int anInt( 7 );

ss << anInt << "HABITS";
ss << ends;
string theWholeLot = ss.str();

问题是 endsostringstream 中添加了一个 '\0',所以 theWholeLot 实际上看起来像 "7HABITS\0"(即末尾为空)

现在这还没有出现,因为 theWholeLot 被用于使用 string::c_str() 获取 const char * 部分> 这意味着 null 被屏蔽了,因为它只是一个分隔符。然而,当这改为使用字符串时,null 突然意味着一些东西和比较,例如:

if ( theWholeLot == "7HABITS" )

会失败。这让我想到:可能 ends 的原因是回到 ostrstream 的日子,当时流通常不会以 null 终止并且必须这样 str()(然后抛出的不是 string 而是 char *)会正常工作。

然而,既然不可能从 ostringstream 中抛出 char *,使用 ends 不仅是多余的,而且可能很危险,我正在考虑从我的客户代码中删除它们。

谁能看到在仅 std::string 的环境中使用 ends 的明显原因?

最佳答案

您基本上已经回答了您自己的问题,需要的细节也一样多。当 std::stringstd::stringstream 处理所有这些时,我当然想不出任何理由使用 std::ends你。

所以,要明确回答您的问题,不,没有理由在仅 std::string 的环境中使用 std::ends

关于c++ - 这些天 'ends' 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338377/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com