用c ++填充数组

时间:2013-01-21 20:41:10

标签: 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");

        }
}

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

4 个答案:

答案 0 :(得分:13)

使用C ++ 11

#include <algorithm>
#include <iostream>

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

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

答案 1 :(得分:3)

您可以使用[]运算符并指定char值。

char y[80];
for(int b=0; b<10; ++b)
    y[b] = 'r';

是的,std::fill是一种更惯用和现代的C ++方法,但您也应该了解[]运算符!

答案 2 :(得分:0)

选项1: 定义时初始化数组。仅方便初始化少量值。优点是可以声明数组const(此处未显示)。

char const fc = 'r';   // fill char
char y[ 80 ] = { fc, fc, fc, fc,
                 fc, fc, fc, fc,
                 fc, fc };

选项2: 经典C

memset( y, y+10, 'r' );

选项3: 经典(pre-C ++ 11)C ++

std::fill( y, y+10, 'r' );

答案 3 :(得分:0)

// ConsoleApp.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

int fun(bool x,int y[],int length);
int funx(char y[]);
int functionx(bool IsMainProd, int MainProdId, int Addons[],int len);
int _tmain(int argc, _TCHAR* argv[])
{
    int AddonCancel[10];

    for( int i = 0 ; i<4 ;++i)
    {
        std::fill(std::begin(AddonCancel)+i,std::begin(AddonCancel)+i+1,i*5);
    }
    bool IsMainProduct (false);
    int MainProduct =4 ; 
    functionx(IsMainProduct,MainProduct,AddonCancel,4);

}

int functionx(bool IsMainProd, int MainProdId, int Addons[],int len)
{
    if(IsMainProd)
        std::cout<< "Is Main Product";
    else
    {
        for(int x = 0 ; x<len;++x)
        {
          std::cout<< Addons[x];
        }
    }

    return 0 ; 
}