【问题标题】:Format a return string C++格式化返回字符串 C++
【发布时间】:2018-12-29 11:59:20
【问题描述】:

我想从 C++ 中的函数返回一个字符串,该函数由不同的字符串和一个整数创建。我想以"ABCDFFFF00230000EFGH" 的形式创建一个字符串。 “ABCD”在command[0]中定义为字符串,"0023"answer定义的整数,"EFGH"command[4]中定义为字符串。

我试过了:

return "{0}FFFF{1}0000{2}".format(command[0], answer, command[4]);

但这会报错:

成员引用基类型“const char [18]”不是结构或联合

我试过了:

return (command[0], "FFFF", answer, "0000", command[4]);

但这只会返回command[4] 的值。

我试过了:

return (command[0] + "FFFF", answer + "0000" + command[4]);

我也用 Python 写过这段代码:

return "{0}FFFF{1}0000{2}".format(command[0], answer, command[4])

哪个给出了正确的答案。

【问题讨论】:

  • 1) 您是否尝试过使用std::sprintf? C++ 是与 python 不同的语言。为什么你期望它以同样的方式表现? 2) 此外,考虑从good C++ book 学习而不是随机编码。

标签: c++ string return


【解决方案1】:

使用字符串流(需要#include <sstream>#include <iomanip>)。这可能与格式不完全正确,但可以帮助您入门。

std::ostringstream oss;
oss << command[0] << "FFFF" << setfill('0') << std::setw(4) << answer << "0000" << command[4];
return oss.str();

但是,不要随意尝试可以在 Python 中使用的东西,因为它们不太可能在 C++ 中使用。做一些适当的研究。

【讨论】:

  • 我不想和你发生编辑大战,请停止回滚对你答案的改进。就像我之前在您的另一个答案中所说的那样,您不能阻止用户根据 Stack Overflow 条款编辑您的帖子,也不能要求用户停止这样做。通过发布内容,您将版权转让给 Stack Overflow,您不再拥有它。
  • @cybermonkey 但它们并不是改进。例如 BTW 并不意味着与然而相同。只是意义不同而已。我也不希望卷入编辑战,但你应该停止编辑我的帖子。当然要纠正明显的错误,但不要为了风格而编辑它,或者用你的编辑来改变意思。我并不真正关心法律方面的细节,但我认为一般的礼貌是你会尊重我对我的职位的意愿。也许我不拥有这篇文章,但你也不拥有。你没有比我更多的权利。
  • 风格是编辑帖子的正当理由,如果它改进了帖子,我们鼓励它这样做。
  • @cybermonkey 风格总是见仁见智。只有您认为您的编辑改进了样式。我喜欢以我的写作风格写的附有我名字的帖子。但无论如何,您实际上改变了我帖子的含义。您用一个词替换了另一个具有不同含义的词。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多