注册 登录
编程论坛 VC++/MFC

用一个初始值设定项初始化所有数组元素的方式的问题?

fgfdfg 发布于 2011-08-19 21:39, 2030 次点击
请问一下:
Visual C++2010 C++\CLI平台
array<wchar_t>^ indicators(gcnew array<wchar_t>(sentence -> Length){L'*'});

① 这个数组中的 {L'*'} 代表什么意思?
谢谢。
{L'*'} 这个整体,比如说初始化数组元素,是初始化该数组的所有元素还是只初始化第一个元素
我逐步调试过,好像只初始化第一个元素。
② 而且这个{L'*'}好像可有可无,删了,程序也照样运行,请问这个有什么作用、意义?

完整程序如下:
#include "stdafx.h"

using namespace System;

int main(array<System::String ^> ^args)
{
    array<wchar_t>^ punctuation = {L'\"', L'\'', L',', L'.', L'?', L'!', L':', L';'};
    String^ sentence(L"\"It\'s chilly.\" the boy\'s mother said coldly.");
    array<wchar_t>^ indicators(gcnew array<wchar_t>(sentence -> Length){L'*'});
   
    int index(0);
    int count(0);
    while((index = sentence -> IndexOfAny(punctuation, index)) >= 0)
    {
        indicators[index] = L'^';
        ++index;
        ++count;
    }

    Console::WriteLine(L"The sentence contains {0} punctuations.", count);
    Console::WriteLine(L"{0}\n{1}", sentence, gcnew String (indicators));
    return 0;
}

测试结果,只显示一个“*”,如果是初始化数组所有元素,不是有好多“******”?

书上的原文是这样的:
注意在数组说明后面的大括号中用一个初始值设定项初始化所有数组元素的方式。
┈┈┈┈┈┈┈┈《Visual C++ 2010入门经典(第5版)》Ivor Horton 著 苏正泉 李文娟 译 P203

书上怎么说是初始化所有数组元素。
实际上我自己测过,也只是初始化第一个数组元素。

请问,这是什么原因?是书上翻译错了吗?
谢谢。

[ 本帖最后由 fgfdfg 于 2011-8-19 21:40 编辑 ]
2 回复
#2
hahayezhe2011-08-20 08:48
初始化吧
L即为长指针的意思 修饰后面的字符或字符串为宽字节

你那是什么程序 那么像C#
#3
fgfdfg2011-08-20 21:50
回复 2楼 hahayezhe
请问:
①初始化数组的所有元素,还是第一个元素?
②将其删除,程序照样正常运行,有什么存在的意义?

C++\CLI
1