【发布时间】:2014-12-24 03:47:30
【问题描述】:
很抱歉,如果这可以通过 Google 解决 - 我找不到任何东西。
char foo[4] = "abcd";
在 C++ 中无效(由于需要 '\0' 终止符),但 IIRC 在 C 中有效——对吗?
我有一组结构,其中包含大量“固定长度”字符字段,这些字段将被空白填充,而不是 '\0' 终止。我希望能够进行通常的结构初始化——你知道
mystruct bar = {17, "abcd", 0x18, "widget ", ...
但我不能在 C++ 中做到这一点。我想一种解决方案是将所有像这样的初始化结构放入他们自己的C(不是++)源模块中。我试图避免的丑陋、费力的解决方案是
mystruct bar = {17, {'a', 'b', 'c', 'd'}, 0x18, {'w', 'i', 'd', 'g', 'e', 't', ' ', ' '}, ...
有没有好的 C++ 解决方案?一个聪明的宏可以有效地让“abcd”成为没有'\0'终止符的char[4]?
谢谢, 查尔斯
【问题讨论】:
-
@juanchopanza C++ is stricter on this
-
为什么不
std::string? -
不应该是char foo[5] = "abcd";在你的例子中?
-
@IlyaKobelevskiy 不,在示例中它是“正确的”。
标签: c++ arrays struct char terminator