用c ++填充数组

jun*_*omo 7 c++ visual-c++ c++11

我是c ++的新手.我试图编写以下代码,用新值填充数组的每个字节而不覆盖其他字符.下面的每个字节(r)应该在数组的新地址处加起来.

int _tmain(int argc, _TCHAR* argv[]) {
    char y[80];
    for(int b = 0; b < 10; ++b) {
        strcpy_s(y, "r");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果c ++中有任何可以执行此操作的功能,请告诉我.在上面的例子中,值'r'是任意的,这可以有任何新值.因此得到的字符数组应包含值rrrrr ... 10次.非常感谢您提前做好准备.

Rap*_*ptz 15

使用C++ 11

#include <algorithm>
#include <iostream>

int main() {
    char array[80];
    std::fill(std::begin(array),std::begin(array)+10,'r');
}
Run Code Online (Sandbox Code Playgroud)

或者,如您可以使用的评论中所述std::fill(array,array+10,'r').

  • `std::begin` 有什么意义?你可以简单地使用`array`。 (2认同)
  • @JackAidley使用-O2进行编译,ASM输出[几乎相同](http://pastebin.com/w5ge9MqH) (2认同)
  • @Non-Stop:我强烈不同意,`std::begin` 是毫无意义的冗长。最糟糕的是,它表明正在完成的工作并非如此。任何使用 C 风格数组的人都应该明白这里的 `array` 指向数组的第一个元素。 (2认同)
  • @JackAidley:即使你错了,不同意也是你的权利.:) (2认同)
  • @balki 最初的问题是填充前 10 个元素。 (2认同)