Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 47

Настройка unicode. Ошибка при выполнении программы

04.04.2017, 21:20. Показов 1195. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Знаю, что есть tchar.h, но мне нужно настроить unicode самому.

C++ (Qt)
1
2
3
4
5
6
7
8
9
#ifdef UNICODE
#define TCHAR wchar_t
#define cout wcout
#define cin wcin
 
#else
#define TCHAR char
#define TEXT(p) p
# endif
Вот, собственно, настройка, лежит она в .h
Проблема:

При выполнении программы вылетает такая ошибка:
Необработанное исключение в "0x535147af (msvcr100d.dll)" в "Laboratornaya_3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".

Код программы:
C++ (Qt)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "head.h"
 
void main(){
    setlocale(LC_ALL,"rus");
    TCHAR str[100];
    int n, len, k, kol, kolStrok = 0;
 
    do{
    cout << L"Номер строки, которую нужно преобразовать: ";
    cin >> k;
    cout << L"Введите строку: "; 
    wcin >> str;
 
        cout << L"Количество буквенных латинских подстрок, которые удалось переставить в обратном порядке: " << kol 
            << endl 
            << L"Адрес строки: " << reversK(str, k, kol) << endl;
        if (kol > 0) 
            kolStrok++;
        cout << L"Количество измененных строк: " << kolStrok << endl;
 
    cout << endl << L"Повторить решение? (1 - да, 0 - нет): ";
    cin >> n;
    }while(n != 0);
}
 
#include "head.h"
 
void revers(TCHAR* str, int n){
    TCHAR hold;
    int i, j;
    TCHAR* p1 = str;
    for (i=0, j = n - 1; i < j; i++, j--){
        hold = *(str + j);
        *(str + j) = *(str + i);
        *(str + i) = hold;
    }
}
//  for (TCHAR* p2 = (str + n-1); p1 < p2; p1++, p2--)
//  {
//      hold = *p2;
//      *p2 = *p1;
//      *p1 = hold;
//  }
//}
 
TCHAR* strAlfa(TCHAR* str, int& len) {
    len=0;
 
    //Поиск начала первой буквенной подстроки
    for (;!isAlfa(*str) && *str; str++);
 
    // Проверка на наличие буквенной подстроки
    if (*str==0)
        return 0;
    TCHAR* p = str;
 
    //Вычисление длины первой буквенной подстроки 
    for (; isAlfa(*str); str++, len++);
    return p;
}
 
 
int  isAlfa (TCHAR s){
    if (s>='a' && s<='z' || s>='A' && s<='Z'|| s>='а' && s<='я' || s>='А' && s<='Я')
        return 1;
    return 0;
}
 
TCHAR* reversK(TCHAR* str, int k , int& kol){
    int len;
    TCHAR* nextPart = str;
    kol = 0;
    int i = 1;
    for(int i = 1; nextPart = (strAlfa(nextPart, len)); i++, nextPart+=len){        
        if(i % k == 0){
            revers(nextPart, len);
            kol++;
        }
    }
    return ((kol > 0) ? nextPart : 0);
} 
 
#ifndef head_H
#define head_H
//#pragma once
#include <iostream> 
#include<string.h>
//#include <tchar.h>
using namespace std;
 
 
#ifdef UNICODE
#define TCHAR wchar_t
#define cout wcout
#define cin wcin
 
#else
#define TCHAR char
#define TEXT(p) p
# endif
 
int  isAlfa (TCHAR s);
TCHAR* strAlfa(TCHAR* str, int& len);
void revers(TCHAR* str, int n);
TCHAR* reversK(TCHAR* str, int k , int& kol);
 
#endif
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2017, 21:20
Ответы с готовыми решениями:

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

Ошибка при выполнении программы.
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; #include &lt;cstdlib&gt; using namespace std; int main () { int n, m, k; ...

Ошибка при выполнении программы
//set.h #pragma once typedef unsigned short WORD; class Set { private: int minElem; int maxElem;

4
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.04.2017, 21:40
И при чём тут unicode? len у тебя не инициализирована. Символы в isAlpha() должны быть с L, да и есть для этого стандартная функция.
0
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 47
06.04.2017, 08:48  [ТС]
В .h разве не юникода настройка? wchar_t мне казалось юникодом... Даже с L не работает... Мне нужно разработать эту функцию самому, ибо универ, первый курс с:
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
06.04.2017, 08:59
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
#include <iostream>
 
#define UNICODE
 
#ifdef UNICODE
# define TCHAR wchar_t
# define str(text) L##text
# define out std::wcout
# define in std::wcin
#else
# define TCHAR char
# define str(text) text
# define out std::cout
# define in std::cin
#endif
 
int main()
{
    out << std::boolalpha;
    
    out
        << std::is_same<TCHAR, wchar_t>::value << "\n"
        << std::is_same<decltype(out), decltype(std::wcout)>::value << "\n"
        << std::is_same<decltype(in), decltype(std::wcin)>::value << "\n";a
}
Добавлено через 1 минуту
хотя ещё не мешало бы iostream типы подстроить.
0
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 47
06.04.2017, 19:05  [ТС]
Совершенно ничего не помогает все так же ошибка... Заметил, что ошибка появляется, когда в main выполняется эта функция. Причем, в функции ошибок нет, но при return выскакивает такое:
Необработанное исключение в "0x535147af (msvcr100d.dll)" в "Laboratornaya_3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".
Все проверил... Из массива выходить не должен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.04.2017, 19:05
Помогаю со студенческими работами здесь

Ошибка при выполнении программы
Выдает вот такую ошибку при выполнении программы. Компиляция происходит нормально. а работать не хочет. Уже запустил легкую программу, но...

Ошибка <hash_map> при выполнении программы
При выполнении простого консольного проекта C++ #include &quot;std_lib_facilities.h&quot; int main() { cout &lt;&lt; &quot;I hate u,...

При выполнении программы выходит ошибка
Когда выполняется программа выходит ошибка: Необработанное исключение по адресу 0x77A8205E (msvcr120d.dll) в Тест графиков.exe: 0xC0000005:...

Динамический массив. Ошибка при выполнении программы
Программа должна предоставить заполнение массива пользователю, а дальше вывести массив на экран. (Массив динамический) При компиляции...

Ошибка нарушения прав доступа при выполнении программы
Програмка компилируется, но не запускается. Ошибка: 1000 (0) handle_exceptions: Exception: STATUS_ACCESS_VIOLATION preo 1000 (0)...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru