На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

C++: String в string и нахождение позиции символа


Эта заметка продолжит цикл по преобразованию типов. В ней мы научимся преобразовывать System::String (String ^) в std::string (стандартную строку), а также находить символ в этой самой преобразованной строке.



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

Итак, сама функция по приведению System::String к типу std::string выглядит вот так:

void MarshalString ( String ^ s, string& os ) {  
   using namespace Runtime::InteropServices;  
   const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();  
   os = chars;  
   Marshal::FreeHGlobal(IntPtr((void*)chars));  
}  
А теперь применим эту функцию на практике. Получим содержимое текстового поля и проверим, есть и в нем определенный символ, в данном случае – запятая:

String^ s = textBox1->Text;
string s2 = "";
MarshalString(s, s2);
int pos = s2.find(",") ;
if  (pos==-1) MessageBox::Show("Есть!", "Запятая",MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
else MessageBox::Show("Нет!", "Запятая",MessageBoxButtons::OK,MessageBoxIcon::Asterisk);
Код на самом деле довольно прост и, как я думаю, в комментариях не нуждается. Единственно, что может быть непонятно - это переменная pos - в неё мы пишем номер позиции найденного символа. Если она равняется "-1", то такого символа, увы, в данной строке нет. На всякий случай напоминаю, что нумерация символов начинается с нуля.

Если же вам что-то все же непонятно, или требуется написать программу на C++, то вы можете обратиться ко мне. Пишите – и за некоторую сумму денег я вам помогу. Быстро, недорого и квалифицированно.


Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, си плюс плюс





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Бесплатные уроки по Java
Пошаговое руководство по верстке на вордпресс. Глава седьмая: простейшая галерея и хлебные крошки


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.