Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Převod string na array

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Převod string na array

Autor: tomaspacl

10:51:28 18.05.2010

DDD Napsal:
-------------------------------------------------------

>
> Nakonec mi tu pan Valerian poradil dobře dát to do
> Stringu. String mi úplně stačí. Jenom jsem
> nevěděl, že jde String procházet jako pole a
> neznal jsem ani tu možnost remove. Obojí mi tady
> p. Valerian předvedl a funguje mi to perfektně.
> Takže já jsem spokojen.

Pokud to pro vase ucely staci a je to jednoucelova
zalezitost, pak je vse v naprostem poradku.

Pokud ovsem chcete podobne pracovat s retezci i nadale,
mozna zjitite, ze StringBuilder je trida vhodnejsi,
nez String.

String je totiz immutable, kdezto StringBuilder mutable,
takze treba uz pri jednoduchem odstranovani znaku ze
Stringu vytvarite v pameti novy objekt tridy String,
kdezto pri pouziti StringBuilder objekt zustava.
To uz muze mit zasadni vliv pri planovani trid pro
praci s retezci (pamet, ukazatele apod.).

Takze treba uz Jirkuv priklad:
[code]
String^Pole = textbox1->Text;

Pole = Pole->Remove(Pozice,Pocet);
[/code]
na druhem radku vytvari novy objekt tridy String
a po provedeni druheho radku plati
[code]
Pole != textbox1->Text
[/code]
Pokud byste pokracoval dalsimi Remove, tak pri kazdem
vytvarite novy objekt typu String - coz pri kratsich
retezcich nevadi, pri delsich uz pocitite pametovy
i vykonovy narust - navic puvodni retezec ceka (a prekazi)
v pameti na garbagge collector.

Pri pouziti tridy StringBuilder pak zaberete pamet
pouze jednou.

Mozna je to pro vase ucely prehnana analyza problemu,
pokud ano, omlouvam se - chtel jsem jen poradit.
Pokud ne, doporucim procist MSDN - rozdil mezi
String a StringBuilder je tam pomerne dobre vysvetlen.

Citovat příspěvek

 

Re: Převod string na array

Autor: DDD

9:52:28 18.05.2010

tomaspacl Napsal:
-------------------------------------------------------
> Na praci s retezcem je primo urcena trida
> StringBuilder - vice viz MSDN.
>
> Obrzlicky pres Array, List
> nejsou v tomto pripade na miste.
>
> Muzete si ale za to sam, kdybyste se rovnou zeptal
> ve foru .NET, tak uz davo mate spravnou odpoved -
> tady je forum o Visual C++ a nemuzete cekat, ze
> vam tu poradi nekdo se zkusenosti v .NET.
>
>

Nakonec mi tu pan Valerian poradil dobře dát to do Stringu. String mi úplně stačí. Jenom jsem nevěděl, že jde String procházet jako pole a neznal jsem ani tu možnost remove. Obojí mi tady p. Valerian předvedl a funguje mi to perfektně. Takže já jsem spokojen.

Citovat příspěvek

 

Re: Převod string na array

Autor: tomaspacl

7:42:48 18.05.2010

Na praci s retezcem je primo urcena trida StringBuilder - vice viz MSDN.

Obrzlicky pres Array, List nejsou v tomto pripade na miste.

Muzete si ale za to sam, kdybyste se rovnou zeptal ve foru .NET, tak uz davo mate spravnou odpoved - tady je forum o Visual C++ a nemuzete cekat, ze vam tu poradi nekdo se zkusenosti v .NET.

Citovat příspěvek

 

Re: Převod string na array

Autor: JiriValerian

9:39:02 28.04.2010

[color=#008000]DDD Napsal:
-------------------------------------------------------
> doufal sem ze to bude něco jako
> Pole->remove(index); jako u normálního stringu
> ...něco takovýho by nebylo? :)[/color]

Pokud chcete použít [b]array[/b] pak to jde nepřímo třeba přes [b]String[/b] takto:
[size=14px][code]Pole [color=#800000]=[/color] String[color=#800000]([/color]Pole[color=#800000])[/color][color=#800000].[/color]Remove[color=#800000]([/color]Pozice[color=#800000],[/color]Pocet[color=#800000])[/color][color=#800000]-[/color][color=#800000]>[/color]ToCharArray[color=#800000]([/color][color=#800000])[/color][color=#800000];[/color][/code][/size]

Pokud to chcete přímo pak použijte namísto [b]array[/b] raději [b]List[/b] takto:
[size=14px][code]List[color=#800000]<[/color]Char[color=#800000]>[/color]^Pole [color=#800000]=[/color] [color=#0000FF]gcnew[/color] List[color=#800000]<[/color]Char[color=#800000]>[/color][color=#800000]([/color]textbox1[color=#800000]-[/color][color=#800000]>[/color]Text[color=#800000])[/color][color=#800000];[/color]

[color=#008000]// zrušení znaku na pozici[/color]
Pole[color=#800000]-[/color][color=#800000]>[/color]RemoveAt[color=#800000]([/color]Pozice[color=#800000])[/color][color=#800000];[/color]

[color=#008000]// prochazeni listu[/color]
[color=#0000FF]for[/color] [color=#800000]([/color] [color=#0000FF]int[/color] k [color=#800000]=[/color] [color=#0000FF]0[/color][color=#800000];[/color] k [color=#800000]<[/color] Pole[color=#800000]-[/color][color=#800000]>[/color]Count[color=#800000];[/color] k[color=#800000]+[/color][color=#800000]+[/color] [color=#800000])[/color]
[color=#800000]{[/color]
[color=#008000]// použití Pole[k][/color]

[color=#800000].[/color][color=#800000].[/color][color=#800000].[/color]

[color=#800000]}[/color][/code][/size]

A nebo to nechte ve [b]Stringu[/b] i ten se dá procházet po znacích jako pole
a podporuje rušení jednoho a více znaků od zvolené pozice:
[size=14px][code]String^Pole [color=#800000]=[/color] textbox1[color=#800000]-[/color][color=#800000]>[/color]Text[color=#800000];[/color]

Pole [color=#800000]=[/color] Pole[color=#800000]-[/color][color=#800000]>[/color]Remove[color=#800000]([/color]Pozice[color=#800000],[/color]Pocet[color=#800000])[/color][color=#800000];[/color]

[color=#008000]// prochazeni struingu po znacich [/color]
[color=#0000FF]for[/color] [color=#800000]([/color] [color=#0000FF]int[/color] k [color=#800000]=[/color] [color=#0000FF]0[/color][color=#800000];[/color] k [color=#800000]<[/color] Pole[color=#800000]-[/color][color=#800000]>[/color]Length[color=#800000];[/color] k[color=#800000]+[/color][color=#800000]+[/color] [color=#800000])[/color]
[color=#800000]{[/color]
[color=#008000]// použití Pole[k][/color]

[color=#800000].[/color][color=#800000].[/color][color=#800000].[/color]

[color=#800000]}[/color][/code][/size]

Citovat příspěvek

 

Re: Převod string na array

Autor: visualprog

6:44:11 28.04.2010

Tak to preved na string (tu) a zpet do pole (td)

Citovat příspěvek

 

Re: Převod string na array

Autor: DDD

21:00:35 27.04.2010

doufal sem ze to bude něco jako Pole->remove(index); jako u normálního stringu ...něco takovýho by nebylo? :)

Citovat příspěvek

 

Re: Převod string na array

Autor: Farao

20:42:05 27.04.2010

Pro smazání jednoho znaku (prvku pole) musíš přesunout všechny prvky za mazaným o jedna doleva. Myslím, že string z .NET na to má metodu, ale obecně si to musíš napsat sám.

Citovat příspěvek

 

Re: Převod string na array

Autor: DDD

19:37:56 27.04.2010

Díky moc, za špatnou sekci se omlouvám. Ještě se chci zeptat, jak je možné jednotlivé prvky tohoto pole mazat, díky.

Citovat příspěvek

 

Re: Převod string na array

Autor: JiriValerian

18:37:33 27.04.2010

[color=#008000]DDD Napsal:
-------------------------------------------------------
> zdravím, zkouším dělat windows form aplikaci a
> chtěl a bych text z textBoxu převíst do array pole
> tak, aby každý znak představoval jedno místo pole
> a šlo rozebrat jednotlivé znaky. Prosím o příklad.
>[/color]

Aplikace [b]Windows Form[/b] jsou založeny na [b].NET Frameworku[/b] a na vše k tomu je vhodnější se ptát spíš v konferenci

[b]Diskuzní forum: .Net[/b] http://forum.builder.cz/list.php?31

Když píšete [b]Windows Form[/b] aplikaci ve [b]Visual C++[/b] tak se to nepíše v čistém C++, ale v [b]C++/CLI[/b].

Mělo by to jít například takto:
[code][color=#000080]array^Pole = textbox1->Text->ToCharArray();
for ( int k = 0; k < Pole->Length; k++ )
{
// pouziti Pole[k]

...

}[/color][/code]

Citovat příspěvek

 

Převod string na array

Autor: DDD

16:28:28 27.04.2010

zdravím, zkouším dělat windows form aplikaci a chtěl a bych text z textBoxu převíst do array pole tak, aby každý znak představoval jedno místo pole a šlo rozebrat jednotlivé znaky. Prosím o příklad. Děkuji

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: