c++ - 转换 C 数组文字以在 C++ 构造函数中工作?

标签 c++ c

我有一些 C 代码,我试图将其转换/包装成 C++ 类。我遇到了一些 C 文字数组(如果我叫错了请纠正我)我不确定如何在 C++ 构造函数中初始化它们,因为我认为你不能做文字,我认为这是特定于编译时间的, 到特定于运行时的东西。

我是否应该明确地将数组定义为特定大小,并在构造函数中对数组的文字执行 strcpy 或类似操作?

char sysUpTime[] = {1,3,6,1,2,1,1,3,0};

最佳答案

作为初始化列表或字符串操作的替代方法,您可以使用类似下面的东西(如果您真的想要的话):

struct Wrapper
{
    template <size_t N>
    Wrapper(const char(&arr)[N]) : vec(arr, arr+N) { }

    vector<char> vec;
};

由于我长期的懒惰,我将所有内容都公开了 :)。然后你可以像这样初始化:

    char foo[] = { 1, 2, 3, 4, 5 };
    Wrapper bar(foo);

    copy(bar.vec.begin(), bar.vec.end(), ostream_iterator<int>(cout, ", "));

关于c++ - 转换 C 数组文字以在 C++ 构造函数中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096446/

相关文章:

C++ 名称查找 - 标准中的示例

c++ - 用 std::istream_iterator 限制 std::copy 的范围

c - 用 C 语言设计一个简单的 GUI 框架

c++ - 专门用于访问者模式的循环?

c++ - 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?

c++ - 如何使用 QProcess 通过 Ping 检测 "Network is Unreachable"?

c - 哪个说明符用于打印 long double 的最大/最小值?

c - 可以取消链接以读写方式打开的文件

c++ - 如何在 C++ 中初始化 vector

c - 以最有效的方式逐行阅读*平台特定*