微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将多个字符串组合为c字符串

如何解决将多个字符串组合为c字符串

让我开始说,我知道这并不理想。我在C ++中使用C字符串在做什么? 很好的问题,但是我使用的软件的某些旧服务不存储动态内存。 话虽如此。我正在尝试解决一个常见的问题

  • 将字符串文字转换为char *
  • c种串联字符串的方法可能导致缓冲区溢出。

我遇到了c字符串问题。我发现这个线程有很多很棒的方法获取字符串文字,整数,浮点数之类的东西,并将其串联成一个字符串。对于这些示例中的几乎任何一个,我都可以执行以下操作:

std::string s = stringger("word1",' ',12345,"word2");
const char *c = s.c_str();

下面是我希望做的一个例子。再次编译,但不返回任何内容

#include <iostream>
#include <string>
#include <sstream>

template< typename ... Args >
const char* stringer(Args const& ... args )
{
    std::ostringstream stream;
    using List= int[];
    (void)List{0,( (void)(stream << args),0 ) ... };

    return stream.str().c_str();
}

int main()
{
    const char *s = stringer("hello",23,3.14," Bye! " );

    std::cout << s << '\n';

但是,当我尝试更改返回类型时,我什么也没得到。它可以编译,但我假设它返回null。我想念什么?

Concatenation of strings thread.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。