Официальный сайт студ.городка НГТУ
Программирование и БД » [C++] Строка из текстбокса 

#1  14.11.10 12:53

[C++] Строка из текстбокса

Подскажите пожалуйста как взять строку из текстбокса и присвоить её массиву символов для дальнейшей работы и потом вывести в другой текстбокс

Offline

#2  14.11.10 16:34

Re: [C++] Строка из текстбокса

в С++ нет текстбоксов. Они есть в VCL, MFC, Qt и т.д.
Подскажите пожалуйста какую библиотеку вы используете.

Offline

#3  14.11.10 16:40

Re: [C++] Строка из текстбокса

Как это нет, есть) В Визуал студио добавляются)\
.NET вот какая
ну или MFC )

Исправлено DaZzle (14.11.10 23:42)

Offline

#4  14.11.10 23:45

Re: [C++] Строка из текстбокса

Код: cpp:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
		 {
			char str[100];
			int index1, index2, number, count;
			str = textBox1->Text;
			int len = strlen( str );
 
			//удаляет лишние пробелы
			for( index1 = 0; index1 < len; index1++ )
			{
				if(( index1 == 0 ) && ( str[index1] == ' ' ))
				{
					for( index2 = index1; index2 < len; index2++ )
					{
						str[index2] = str[index2+1];
					}
					index1 = -1;
				}
				if(( str[index1] == ' ' ) && ( str[index1+1] == ' ' ))
				{
					for( index2 = index1; index2 < len; index2++ )
					{
						str[index2] = str[index2+1];
					}
					index1 -= 1;
				}
			}
 
			//удаляет символы из слов соответствующие порядковому номеру слова в строке
			for( index1 = index2 = number = 0; index1 < len; index1++ )
			{
				//сразу удаляет первый символ
				if( index1 == 0 )
				{
					for( index2 = index1; index2 < len; index2++ )
					{
						str[index2] = str[index2+1];
					}
					number += 2;
				}
 
 
				if(( str[index1] == ' ' ) && ( str[index1+1] != ' ' ))
				{
					for( index2 = index1, count = 0; index2 < len; index2++, count++ )
					{
						if( str[index2+1] == ' ' )
							break;
					}
 
					//если букв в слове меньше чем его порядковый номер переходит к другому слову
					if( count < number )
					{
						number++;
						continue;
					}
 
					for( index2 = index1 + number; index2 < len; index2++ )
					{
						str[index2] = str[index2+1];
					}
					number++;
				}
			}
			textBox2->Text = System::Convert::ToString(str);
		 }
};

вот код как сделать чтобы он принял строку в массив символов??

Offline

#5  15.11.10 01:31

Re: [C++] Строка из текстбокса

Смайлек написал(а):

в С++ нет текстбоксов

а в

DaZzle написал(а):

.NET вот какая

или, судя по коду, Visual C++ есть, как элемент ToolBox'а. Правильнее надо выражаться

По теме, TextBox работает с UTF-16, то бишь Unicode, поэтому символ кодируется 2 байтами. Пример из MSDN иллюстрирует перекодирование строки из одной кодировки в другую

Код::

using namespace System;
using namespace System::Text;
int main()
{
   String^ unicodeString = "This string contains the unicode character Pi(\u03a0)";

   // Create two different encodings.
   Encoding^ ascii = Encoding::ASCII;
   Encoding^ unicode = Encoding::Unicode;

   // Convert the string into a Byte->Item[].
   array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString );

   // Perform the conversion from one encoding to the other.
   array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes );

   // Convert the new Byte into[] a char and[] then into a string.
   // This is a slightly different approach to converting to illustrate
   // the use of GetCharCount/GetChars.
   array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length ));
   ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 );
   String^ asciiString = gcnew String( asciiChars );

   // Display the strings created before and after the conversion.
   Console::WriteLine( "Original String*: {0}", unicodeString );
   Console::WriteLine( "Ascii converted String*: {0}", asciiString );
}

да, и .NET и MFC - разные вещи

Исправлено [PAUL] (15.11.10 01:37)

Offline

#6  15.11.10 12:46

Re: [C++] Строка из текстбокса

Так дело в том что у меня String^ и прочие вообще на распознает. :(

Offline

#7  15.11.10 13:21

Re: [C++] Строка из текстбокса

Если проект создан как Windows Forms Application, должен распознавать. Какая среда разработки? Visual Studio 2008?
Создал новый проект для проверки, добавил на него кнопку и в обработчике события нажатия написал

Код::

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 String^ st="aaa";
			 }
	};

Нормально скомпилировалось

Исправлено [PAUL] (15.11.10 13:24)

Offline

#8  15.11.10 13:42

Re: [C++] Строка из текстбокса

Да VS 2008, да на новом проекте нормально у меня тоже скопилировалось а на старом не хочет :(

Offline

#9  15.11.10 13:42

Re: [C++] Строка из текстбокса

Щас переделаю

Offline

#10  15.11.10 14:00

Re: [C++] Строка из текстбокса

всё равно вот какие ошибки :(
Ошибка    2    error C2065: Encoding: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    184    53.1
Ошибка    3    error C2065: ascii: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    184    53.1
Ошибка    4    error C2653: Encoding: не является именем класса или пространства имен    e:\oo\informatika\языки программирования\53.1\Form1.h    184    53.1
Ошибка    5    error C2065: ASCII: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    184    53.1
Ошибка    6    error C2065: Encoding: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    185    53.1
Ошибка    7    error C2065: unicode: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    185    53.1
Ошибка    8    error C2653: Encoding: не является именем класса или пространства имен    e:\oo\informatika\языки программирования\53.1\Form1.h    185    53.1
Ошибка    9    error C2065: Unicode: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    185    53.1
Ошибка    10    error C2065: unicode: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    188    53.1
Ошибка    11    error C2227: выражение слева от "->GetBytes" должно указывать на тип класса, структуры или объединения либо на универсальный тип    e:\oo\informatika\языки программирования\53.1\Form1.h    188    53.1
Ошибка    12    error C2653: Encoding: не является именем класса или пространства имен    e:\oo\informatika\языки программирования\53.1\Form1.h    191    53.1
Ошибка    13    error C2065: unicode: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    191    53.1
Ошибка    14    error C2065: ascii: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    191    53.1
Ошибка    15    error C2065: ascii: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    196    53.1
Ошибка    16    error C2227: выражение слева от "->GetCharCount" должно указывать на тип класса, структуры или объединения либо на универсальный тип    e:\oo\informatika\языки программирования\53.1\Form1.h    196    53.1
Ошибка    17    error C2065: ascii: необъявленный идентификатор    e:\oo\informatika\языки программирования\53.1\Form1.h    197    53.1
Ошибка    18    error C2227: выражение слева от "->GetChars" должно указывать на тип класса, структуры или объединения либо на универсальный тип    e:\oo\informatika\языки программирования\53.1\Form1.h    197    53.1

Offline

#11  15.11.10 16:25

$up
Профиль

Re: [C++] Строка из текстбокса

русская студия - жесть 8)

Offline

#12  15.11.10 19:26

Re: [C++] Строка из текстбокса

Тогда советую, если есть такая возможность, перенести на новый проект старую программу.

Offline

#13  16.11.10 12:38

$up
Профиль

Re: [C++] Строка из текстбокса

скорее всего using namespace System::Text не написал

Offline

#14  16.11.10 12:42

Re: [C++] Строка из текстбокса

Ребят спасибо за советы)
Но я уже сделал по-другому уже не нада :)

Offline

#15  24.11.10 17:04

Re: [C++] Строка из текстбокса

не за что

Offline

Программирование и БД » [C++] Строка из текстбокса 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.057 сек.
Выполнено 11 запросов.