Структура программы на языке Си. Этапы выполнения программы. Тип String в консольных приложениях

Тип String в консольных приложениях.

Преобразования строковых типов.

а) Преобразование из массива char в String и наоборот.

Как упоминалось выше, для преобразования массива char к типу String достаточно просто присвоить его переменной типа String:

char c[]="Привет!";

String s=c;

Обратное же преобразование автоматически не делается. Для его осуществления используется метод c_str() типа String. Он создает временный массив char, который создается только на время выполненияоператора, содержащего этот метод:

s=Edit1->Text;

WinExec(s.c_str(), SW_SHOW);

// WinExec - запуск программы с заданным именем

// Функция WinExec требует, чтобы имя было массивом char

Если же нужно использовать полученный массив char в последующей программе, его надо скопировать в "постоянный" (объявленный) массив char:

char a[100];

strcpy(a, s.c_str());

Таким образом, для ввода массивов char в оконных приложениях необходимо использовать функцию strcpy и метод c_str():

char a[100];

strcpy(a, Edit1->Text.c_str());

б) Преобразование из String в простую переменную типа char.

При таком присваивании нужно указать номер символа в строке, который будет присвоен:

String s='*';

char c=s[1];

Обратное же присваивание не вызывает трудностей:

char c='*';

String s=c;

в) Преобразование String и числовых типов.

Функции преобразования были описаны выше в теме "Функции ввода-вывода, Ввод-вывод в оконных приложениях":

String IntToStr (int x); - int à String

int StrToInt (String S); - String à int

double StrToFloat (String S); - String à double

String FloatToStr (double x); - double à String

String FloatToStrF (double x, Format, int p, int d);

- double à String с указанием формата и точности.

Пример 1:

String s="123";

int i=StrToInt(s); // i=123; автоматического

// преобразования String в тип int не происходит

// (хотя наоборот - происходит)

Пример 2: Вывести в одну строку Memo1 переменные N1 и N2 типа int, разделяя их пробелом:

Memo1->Lines->Add(IntToStr(N1)+" "+IntToStr(N2));

// явное преобразование типов необходимо,

// иначе знак + не был бы истолкован по типу String

В консольном приложении использование типа String требует подключения библиотек (достаточно библиотеки vcl):

#include<vcl.h>

(Эта строчка может быть добавлена автоматически).

Для консольного ввода-вывода String должен быть преобразован в массив char и/или наоборот (см. выше). В частности, ввод с консоли лучше производить вначале во вспомогательный массив char, а уже оттуда (если нужно) - в String.

Задача 9. Во введенной с консоли строке заменить все пробелы на символы подчеркивания, используя тип String.

#include<vcl.h>

#include<stdio.h>

#include<conio.h>

void main(){

String t;

int i;

puts("Vvedite stroku s probelami:");

char s[100];

gets(s);

t=s;

for(i=1; i<=t.Length(); i++)

if (t[i]==' ') t[i]='_';

puts(t.c_str());

getch();

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: