С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
takhvatulin
11 / 11 / 0
Регистрация: 04.04.2014
Сообщений: 140
#1

И снова работа со строками - C++

27.06.2014, 18:13. Просмотров 326. Ответов 8
Метки нет (Все метки)

Всем привет!
У меня есть поле ввода и кнопка. Если поле не заполненное, то по нажатию кнопку вылезет сообщение "M", если в поле что то записано - сообщение "N". Очень важно для меня, чтобы строчка была TCHAR, никакие другие строчки мне использовать нельзя.
C++
1
2
3
4
5
6
7
8
TCHAR str[20];
GetDlgItemText(ID_EDIT, str, 10)
if(str == /*пустой строке*/)
{
   MessageBox(_T("Поле пустое"));
}
else
   MessageBox(_T("Поле заполнено));
Вот так программа выглядит. Вот как мне понять пустая ли моя, повторюсь TCHAR строка???
P.S. облазил ваш форум, и не только, не нашел примера с TCHAR'ом, везде примеры со string'ами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2014, 18:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос И снова работа со строками (C++):

Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? - C++
Здравствуйте :) Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? TimerSec = 59; TimerMin = 6; for(int i = TimerSec;...

Работа со строками - C++
ммм, в общем задание такое: Если честно чувствую себя тупым, читая это задание... Препод сказал, что строка вводится без пробелов...

Работа со строками - C++
Есть задание: Код, который давали на лекции int main() { char s = { 0 }; gets_s(s); int len = strlen(s);

Работа со строками - C++
Имеется задачка (олимпиадная, но олимпиада уже прошла): Новый кодовый замок для владельцев нетбуков представляет головоломку не только...

Работа со строками - C++
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных (маленьких) латинских букв; между соседними...

Работа со строками - C++
У меня есть есть структурные переменные и указатели на них, естественно. предположим struct name() { char b="Hello!"; ...

8
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
27.06.2014, 18:30 #2
Цитата Сообщение от takhvatulin Посмотреть сообщение
Вот так программа выглядит. Вот как мне понять пустая ли моя, повторюсь TCHAR строка???
Нет такой "строчки TCHAR". Сидишь, наверное, на поделии от MS, пишешь разную фигню. Подозреваю, что это дефайн, который меняет свое значение в зависимости от выбранной опции в проекте- char для ANSI, whar_t для Unicode. Вот нужную тебе функцию и бери: strcmp, strncmp - char, wcscmp, wcsncmp - wchar_t.
_tcsncmp чтобы не выбирать.
Должно работать, проверить не могу.
0
zss
Модератор
Эксперт С++
6583 / 6145 / 2024
Регистрация: 18.12.2011
Сообщений: 16,020
Завершенные тесты: 1
27.06.2014, 18:32 #3
В справочнике MS нашел, что аналог strlen для _TCHAR это _tcsclen.
А просто if(str[0]==0) написать нельзя?
0
takhvatulin
11 / 11 / 0
Регистрация: 04.04.2014
Сообщений: 140
27.06.2014, 18:35  [ТС] #4
Vourhey,
Цитата Сообщение от Vourhey Посмотреть сообщение
Подозреваю, что это дефайн
C++
1
typedef WCHAR TCHAR, *PTCHAR;
Цитата Сообщение от Vourhey Посмотреть сообщение
пишешь разную фигню.
На счет фигни ты не прав, устроился на работу стажером, учусь программировать, и я не считаю что заниматься этим в 20 лет совмещая с учебой это фигня!!

Добавлено через 57 секунд
zss,
только что нашел такой выход:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
TCHAR STR1[10];
    TCHAR str1[5];
    TCHAR STR2[10];
    TCHAR str2[5];
    TCHAR STR3[10];
    TCHAR str3[5];
    
    GetDlgItemText(IDC_EDIT1, STR1, 4);
    CString st1(STR1);
    GetDlgItemText(IDC_EDIT2, STR2, 4);
    CString st2(STR2);
    GetDlgItemText(IDC_EDIT3, STR3, 4);
    CString st3(STR3);
    CString ST("");
 
    GetDlgItemText(IDC_EDIT1, str1, 4);
    GetDlgItemText(IDC_EDIT2, str2, 4);
    GetDlgItemText(IDC_EDIT3, str3, 4);
 
    int h;
    int m;
    int s;
    
    h = _wtoi(str1);
    m = _wtoi(str2);
    s = _wtoi(str3);
    
    if(h >=24 | m >=60 | s >=60 | st1 == ST | st2 == ST | st3 == ST)
    {
        MessageBox(_T("Неверно установлено время или не все поля заполнены"));
    }
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
27.06.2014, 18:39 #5
Ммм, ну да, солюшн, что надо - объекты создавать.

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от takhvatulin Посмотреть сообщение
На счет фигни ты не прав, устроился на работу стажером, учусь программировать, и я не считаю что заниматься этим в 20 лет совмещая с учебой это фигня!!
Какой молодец...

0
zss
Модератор
Эксперт С++
6583 / 6145 / 2024
Регистрация: 18.12.2011
Сообщений: 16,020
Завершенные тесты: 1
27.06.2014, 18:39 #6
Цитата Сообщение от takhvatulin Посмотреть сообщение
GetDlgItemText(IDC_EDIT1, str1, 4);
Проще int h=GetDlgItemInt(IDC_EDIT1,NULL, true);
0
takhvatulin
11 / 11 / 0
Регистрация: 04.04.2014
Сообщений: 140
27.06.2014, 18:44  [ТС] #7
Цитата Сообщение от zss Посмотреть сообщение
Проще int h=GetDlgItemInt(IDC_EDIT1,NULL, true);
Если писать так, то можно без преобразования получать число из эдита?

Добавлено через 1 минуту
А допустим могу ли я в эдит также заносить
C++
1
GetDlgItem(ID_EDIT)->SetDlgItemInt(100500)
0
zss
Модератор
Эксперт С++
6583 / 6145 / 2024
Регистрация: 18.12.2011
Сообщений: 16,020
Завершенные тесты: 1
27.06.2014, 19:34 #8
Наверное так:
C++
1
GetDlgItem(ID_EDIT)->SetDlgItemInt(ID_EDIT,100500,true);
Соответствующая WinApi Функция SetDlgItemInt(hwnd,ID_EDIT,100500,true);
1
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
27.06.2014, 20:07 #9
TCHAR не нужен, используй только юникод ( wchar_t ).
напиши функцию которая принимает hwnd ( или id контрола ) и возвращает std::wstring
0
27.06.2014, 20:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 20:07
Привет! Вот еще темы с ответами:

Работа со строками - C++
Подскажите пожалуйсто!!! Как удалить часть строки не создавая при этом новой строки?

Работа со строками в С++ - C++
Здравствуйте, вы бы не могли мне помочь решить такую задачу: Дана строка, представляющая предложение. Слова в предложении состоят из ...

Работа со строками C++ - C++
Задание: Запросить у пользователя массив из 10 строк и вывести на экран те, которые равны слову «Ура». #include "stdafx.h" #include...

Работа со строками - C++
Даны два слова. Для каждой буквы первого слова определить, входит ли она во второе слово. Повторяющиеся буквы первого слова не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.