2

不确定要让“strnset”在 QT 中工作需要什么?

#include <stdio.h>
#include <string.h>

char mouse[1000];
strnset(mouse,'\0', 1000);

这会出错...

4

2 回答 2

2

strnset是 C 的扩展,在许多编译器上都不会提供(实际上我从未听说过)。这与 Qt 无关。

不过,有几种方法可以在 Qt 中实现同样的效果。看看QByteArray的不同选项

  • 使用将按次重复的QByteArray (size,ch)构造函数chsize
  • 创建一个仅包含“\0”的 QByteArray,并使用重复函数生成一个 1000 个 \0s 的 QByteArray。
  • 创建一个空的 QByteArray 并使用setNum看起来可行

如评论中所述,如果您想在 Qt 类之外执行此操作,则 C++ 标准算法std::fill_n看起来可以满足您的要求。

于 2013-06-12T19:25:26.480 回答
2

可用选项:

  1. 使用memset.
  2. 利用std::fill_n
  3. 利用qFill
  4. 使用QVector<char>它有fill方法。
  5. (假设你不需要“char”,而是一个字符串)QString s = QString(1000, QChar('a'))
  6. (假设您需要缓冲区):QByteArray.
于 2013-06-12T19:38:39.553 回答