Архив метки: Строка

Число в строку, строку в число на разных языках.

Преобразование числа в строку и обратной операции на разных языках программирования.

Строку в число

С++

int atoi(const char* str) //для чисел типа integer
long atol(const char* str)//для чисел типа long
double atof(const char* str)//для чисел типа double

 PHP

<?php
$foo = 1 + "10.5";                // $foo это float (11.5)
$foo = 1 + "-1.3e3";              // $foo это float (-1299)
$foo = 1 + "bob-1.3e3";           // $foo это integer (1)
$foo = 1 + "bob3";                // $foo это integer (1)
$foo = 1 + "10 Small Pigs";       // $foo это integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo это float (14.2)
$foo = "10.0 pigs " + 1;          // $foo это float (11)
$foo = "10.0 pigs " + 1.0;        // $foo это float (11)
?>

C#

m = int32.Parse("123456");//из строки целое число

 Javascript

Для явного преобразования можно использовать 2 способа:

var number = Number(string_value);
var number = string_value - 0;

parseInt("3 blind mice"); // Возвращает 3
parseFloat("3.14 meters"); // Возвращает 3.14
parseInt("12.34"); // Возвращает 12
parseInt("0xFF"); // Возвращает 255

Число в строку

С++

char* itoa(int value, char* string, int radix) //для чисел типа integer
char* itoa(long value, char* string, int radix)//для чисел типа long
char* itoa(double value, char* string, int radix)//для чисел типа double

PHP

$name=5;
$string_name = (string)$name;

C#

int a=5;
string s=a.toString();

 Javascript

var string_value = String(number); // Использование конструктора String()
// в качестве функции
var string_value = number + ""; // Конкатенация с пустой строкой

Еще одну возможность предоставляет метод toString():

var n = 17;
string_value = number.toString();

Си — работа со строками

Си работа со строками

Объявление строк

Строка в языке Си представляет собой одномерный массив символов, последним элементом которой является символ конца строки – нуль (строка, завершающаяся нулем, то есть NULL terminated string).

Объявление переменной типа строка в языке Си возможно тремя способами, два из которых инициализируют строку во время объявления.

Первый способ:

Объявления массива символов (не забудьте добавить место для завершающего нуля):

char s[40+1];

Второй способ:

Присвоить строковой переменной начальное значение (при этом длину строки компилятор может вычислить сам):

char s[] = "Пример инициализации строки";

Справа от знака присваивания записана строковая константа. В конце строки автоматически добавляется ноль (‘\0’). Константы символьных строк помещаются в класс статической памяти.

Третий способ:

Неявное указание, что используется массив. В левой части от знака присваивания указывается указатель на символ:

char *s="Второй вариант инициализации";

Переменная s будет указателем на то место в оперативной памяти, где располагается строковая константа. В такой форме записи кроется потенциальная ошибка, заключающаяся в том, что указатель на  символ часто называют строкой. Представленная ниже запись – это только указатель на символ, так как для размещения строки место не предусмотрено:

char *s;

Ввод строки со стандартного устройства ввода (клавиатуры)

Для работы со строками есть набор функций. Для ввода со стандартного устройства ввода (клавиатуры) чаще всего используются библиотечные функциями из модуля стандартного ввода-вывода: scanf и gets.

Для ввода строки с помощью функции scanf, использует формат «%s», причем обратите внимание на то, что перед идентификатором строки не используется знак адреса «&», так как одномерный массив уже представлен указателем на его начало:

scanf("%s", s);

Функция gets() считывает символы до тех пор, пока не достигнет символа перехода на новую строку. Функция принимает все символы вплоть до символа перевода строки, но не включает его. К концу строки добавляется завершающий ноль (‘\0’). Функция gets() помещает считанную с клавиатуры последовательность символов в параметр типа строка и возвращает указатель на эту строку (если операция завершилась успешно), или NULL (в случае ошибки). В приведенном ниже примере при успешном завершении операции, на экран будет выведено две одинаковые строки:

#include <stdio.h>
int main()
{  char s[50];
char *p;
p=gets(s);
printf(" \n Введена строка %s. ",s);
if (p) printf(" \n Введена строка %s. ",p);
return 0;
}

Попутно заметим, что функция gets часто используется для ввода лю-бых данных с клавиатуры в виде строки с целью дальнейшего преобразования функцией sscanf к нужному формату или для предварительного анализа вводимых данных, например:

#include <string.h>
#include <stdio.h>
#include <conio.h>
int main()
{ char s[50];   int x, err;
do
   {   printf(" \n Введите целое число -> ");
       gets(s);
       err=sscanf(s, "%d",&x);
       if (err!=1) printf(" \n Ошибка ввода. ");
  } while (err!=1);
  printf("\n Введено целое число -> %d", x);
return 0;
}

Вывод строк на стандартное устройство вывода (экран монитора)

Для вывода строк на стандартное устройство вывода (экран монитора) можно использовать две функции printf и puts. В функции printf в качестве формата передается «%s». Удобство использования этой функции заключается в том, что помимо строки можно сразу выводит данные других типов. Особенность функции puts заключается в том, что после вывода строки автоматически происходит переход на следующую строку.

Функции для работы со строками

Для преобразования строк в языке Си предусмотрена библиотека string. Каждая из функций имеет свой формат записи (прототип).

Наиболее  используемые функции рассмотрены в этой статье. — читать

Пример программ(листинг) работающей со строками

Пример №1(листинг) | Пример№2 (Листинг)

Строки в С++ Листинг программы

Тема: Строки

Задание: :  В 2-х предложениях найти и распечатать совпадающие слова.

Листинг

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>

#define N 20

  //  ПРЕДВАРИТЕЛЬНОЕ ОБЪЯВЛЕНИЕ ФУНКЦИЙ
  // Заголовок программы
      void Title();
  // Ввод предложения
      void InpPredl (char predl[]);
  // Ввод предложения
    void InpPredl(char predl[]);
      // Ввод предложения
    void InpPredl2(char predl[]);
  // Выделение из предложения
     void Select(const char *predl, char m[][N],char *sel, int *n);
  // Поиск повторов слов
     void FindDuplicate(char slova[][N], char slova2[][N], int sl, int rz);
  // Вывод результата
     void OutPredl(char *s1, char *s2);

inline void rus()  // Русификация вывода в консольное окно
{
    //setlocale( LC_CTYPE, ".1251" );
    //setlocale( LC_MONETARY, ".1251" );
    setlocale( LC_ALL, "" );
}

// ОСНОВНАЯ ФУНКЦИЯ
int main()
{
     // ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
  char predl[80];    // Введенное предложение
  char predl2[80];    // Введенное предложение
  char *res;            // Результирующее предложение
  char slova[N][N]; // Массив слов в предложении
  char slova2 [N][N]; // Массив 2 слов в предложении
  int  sl=-1, rz=-1;  // Счетчики слов
  char buk[80]; // все буквы алфавита
  char *bs="йцукенгшщзхъфывапролджэячсмитьбю";// Буквы строчные
  char *bz ="ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ";/*  заглавные */
  char *r="`!;:,.?- _";         // Разделительные знаки
//ВЫЗОВ ФУНКЦИЙ НА ИСПОЛНЕНИЕ
    rus();
// Заголовок программы
       Title ();
  // Ввод предложения
       InpPredl(predl);
       InpPredl2(predl2);
  // Выделение из предложения слов
      Select (predl, slova, r, &sl);
      Select (predl2, slova2, r, &rz);

       FindDuplicate(slova, slova2, sl, rz);

    return 0;
}

// ОПИСАНИЕ ИСПЛЬЗУЕМЫХ ФУНКЦИЙ
// Заголовок программы
void Title()
{
  char s[1000];
  AnsiToOem(" Задание\n",s);
  puts (s);

}
// Ввод предложения
void InpPredl(char *s)
{
    char s2[50];
    AnsiToOem("Введите предложение \n",s2);
    puts(s2);
  strcpy (s,"Верите ли вы, что задача решена?");
  // gets (s);
}
void InpPredl2(char *s)
{
    char s2[50];
    AnsiToOem("Введите предложение \n",s2);
    puts(s2);
  strcpy (s,"Верите ли вы, во что нибудь?");
 // gets (s);

}

// Выделение из предложения
void Select(const char *predl, char m[][N], char *sel, int *n)
{
  char *p, *s;

  s=strdup (predl); // Сделать копию исходного предложения
	// так как передается константа, strtok требует
	// внесения изменений при своей работе
  p = strtok (s, sel);
  while (p)
    {
     (*n)++;
     strcpy (m[*n],p);
     p = strtok (NULL, sel);
    }
  free (s);
}
/ Сравнение слов
void FindDuplicate(char slova[][N], char slova2[][N], int sl, int rz)
{
  int i, j;
  char buk[80];
   i = sl; //кол во слов в 1 массиве слов
AnsiToOem("Повторы ",buk);
            puts (buk);



  while (i>=0)
    {
     for(j=0;j< =rz;j++)
      if (!strcmp(slova[i],slova2[j])) {
            AnsiToOem(slova[i],buk);
            puts (buk);
                                } // Печать слова
      i--;
    }

}