我是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次。 非常感谢您提前做好准备。
答案 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 ;
}