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

[Error] expected constructor, destructor, or type conversion before '(' token

12.12.2021, 17:24. Показов 2293. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
[Ошибка] ожидаемый конструктор, деструктор или преобразование типов перед '(' токен
Здравствуйте, хотел поинтересоваться на счёт этой ошибки - [Error] expected constructor, destructor, or type conversion before '(' token
хотел подключить русский язык в проект (во все файлы) но компилятор выдал ошибку, пробовал и в скобки всё загонять, не получается.

Вот первый исходник -
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
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
#include <ctime>
#include <string>
#include <vector>
#include <fstream>
#include <sstream>
#include <iostream>
#include "record.hpp"
#include "string_functions.hpp"
 
setlocale("LC_CTYPE", "Russian")
 
std::vector<std::string> readLinesIntoArr(std::ifstream &file) {
        std::string line;
        std::vector<std::string> fileLines;
 
        while(std::getline(file, line)) {
                fileLines.push_back(line);
        }
 
        return fileLines;
}
 
std::vector<Record> getRecords(std::string fileName) {
        const std::string phraseTag = "<phrase>";
        const std::string respTag = "<response>";
        std::vector<Record> records;
        std::vector<std::string> rawFile; 
        std::vector<std::string> splitString; 
        std::string line;
        char delim = '>';
        std::ifstream file("records.txt");
        rawFile = readLinesIntoArr(file);
        Record *curRec;
 
 
        for(int i = 0;i < rawFile.size();i++) {
                line = rawFile[i];
                if(line.find(phraseTag) != std::string::npos) { 
                        Record tempRec;
                        splitString = split(line, delim);
                        tempRec.phrase = splitString[1];
                        trim(tempRec.phrase);
                        records.push_back(tempRec);
                        curRec = &records[records.size()-1];
                } else if (line.find(respTag) != std::string::npos) {
                        splitString = split(line, delim);
                        trim(splitString[1]);
                        curRec->responses.push_back(splitString[1]);
                }
        }
 
        return records;
}
 
std::string getResponse(std::string input, std::vector<Record> records) {
        std::string response;
        std::vector<std::string> words = split(input, ' ');
        int total = levenshtein_distance(input, records[0].phrase);
        int index = 0;
 
    
        for (int i = 1; i < records.size(); i++) {
                int tempTotal = levenshtein_distance(input, records[i].phrase);
                if(tempTotal <= total) {
                        total = tempTotal;
                        index = i;
                }
        }
 
        int randIndex = rand() % records[index].responses.size();
        response = records[index].responses[randIndex];
 
        return response;
}
 
 
int main() {
        std::string sInput = "";
        std::string sResponse = "";
        std::ifstream myFile("records.txt");
        std::vector<Record> records;
        records = getRecords("records.txt");
 
        while(1) {
                std::cout << ">";
                getline(std::cin, sInput);
                if (sInput == "q") break;
                sResponse = getResponse(sInput, records);
                std::cout << sResponse << std::endl;
        }
 
        return 0;
}

Вот второй исходник -
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
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
#include "string_functions.hpp"
 
setlocale(LC_ALL, "Russian");
 
std::vector<std::string> split(std::string strToSplit, char delimeter) {
        std::stringstream ss(strToSplit);
        std::string item;
        std::vector<std::string> splittedStrings;
 
        while (std::getline(ss, item, delimeter))
        {
                splittedStrings.push_back(item);
        }
        return splittedStrings;
}
 
size_t levenshtein_distance(const std::string &s1, const std::string &s2) {
        const size_t m(s1.size());
        const size_t n(s2.size());
        
        if( m==0 ) return n;
        if( n==0 ) return m;
        
        size_t *costs = new size_t[n + 1];
        
        for( size_t k=0; k<=n; k++ ) costs[k] = k;
        
        size_t i = 0;
        for ( std::string::const_iterator it1 = s1.begin(); it1 != s1.end(); ++it1, ++i ) {
                costs[0] = i+1;
                size_t corner = i;
                
                size_t j = 0;
                for ( std::string::const_iterator it2 = s2.begin(); it2 != s2.end(); ++it2, ++j )
                {
                        size_t upper = costs[j+1];
                        if( *it1 == *it2 )
                        {
                                costs[j+1] = corner;
                        } else {
                                size_t t(upper<corner?upper:corner);
                                costs[j+1] = (costs[j]<t?costs[j]:t)+1;
                        }
                
                        corner = upper;
                }
        }
 
        size_t result = costs[n];
        delete [] costs;
 
        return result;
}
 
void trimLeading(std::string& str) {
        if (str.empty()) {
                return;
        }
 
        while (str.find(" ") == 0) {
                str.erase(0, 1);
        }
}
 
void trimTrailing(std::string& str) {
        if (str.empty()) {
                return;
        }
 
        size_t len = str.size();
 
        while(str.rfind(" ") == --len) {
                str.erase(len, len + 1);
        }
}
 
void trim(std::string& str) {
        trimLeading(str);
        trimTrailing(str);
}

Вот третий исходник -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "record.hpp"
 
 
 
setlocale(LC_ALL, "Russian");
 
void Record::printRecord() {
        std::cout << "Phrase: " << phrase << std::endl;
        std::cout << "Responses: " << std::endl;
        for (int i = 0; i < responses.size(); i++) {
                std::cout << '\t' << responses.at(i) << std::endl;
        }
}
Только не ругайте я неопытный программист, и если можете объясните по подробнее что там не так.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2021, 17:24
Ответы с готовыми решениями:

Expected constructor, destructor, or type conversion before '.' token
struct Gf3 { GLfloat x; GLfloat y; GLfloat z; } p1,p2,p3,t; t.x = 0.0; t.y = 0.0; t.z = 1.0; p1.x = 0.0; p1.y =...

Ошибка expected constructor, destructor, or type conversion before ';' token
выдает ошибку expected constructor, destructor, or type conversion before ';' token с 61-90 строчку.че делать уже не знаю.проверяла код ...

Ошибка error: ./SDK/SDK.h:11:37: error: expected constructor, destructor, or type conversion before '(' token
Возникает такая ошибка при компиляции, в коде особо не разбираюсь, прошу помочь, вот код: //============== Copyright © 2010 IV:MP...

7
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
12.12.2021, 17:36
Cawend, на какую строку ругается компилятор?

где взять эти файлы ?
Цитата Сообщение от Cawend Посмотреть сообщение
#include "string_functions.hpp"
Цитата Сообщение от Cawend Посмотреть сообщение
#include "record.hpp"
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.12.2021, 18:12
Цитата Сообщение от Cawend Посмотреть сообщение
setlocale("LC_CTYPE", "Russian")
setlocale(LC_CTYPE, "Russian");
1
 Аватар для Cawend
0 / 0 / 0
Регистрация: 28.11.2021
Сообщений: 17
12.12.2021, 18:24  [ТС]
Файлы "string_functions.hpp" и "record.hpp" есть в папке с ними проблем нет, файлы можете загрузить ниже (поменял формат на txt ибо hpp сайт не принимает).
компилятор ругается на setlocale(LC_CTYPE, "Russian") (и точку с запятой тоже пробовал).
Проблема в том что без setlocale(LC_CTYPE, "Russian") всё работает а вот с setlocale(LC_CTYPE, "Russian") сразу ругается, и консоль при выводе русского языка выводит каких-то арабов.
Пробовал уже менять формат txt файла на юникод и UTF-8 не помогает.
И файл для работы программы тоже вложил (records.txt).
Вложения
Тип файла: txt string_functions.txt (399 байт, 0 просмотров)
Тип файла: txt record.txt (216 байт, 0 просмотров)
Тип файла: txt records.txt (674 байт, 0 просмотров)
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
12.12.2021, 18:38
Лучший ответ Сообщение было отмечено DrOffset как решение

Решение

Cawend, потому что это вызов функции.
А вызов функции возможен только в блоке функции.
То есть, в данном случае в main.
1
 Аватар для Cawend
0 / 0 / 0
Регистрация: 28.11.2021
Сообщений: 17
12.12.2021, 20:37  [ТС]
И что делать?
Брать всё в скобки и добавлять main? Или только setlocale и main в скобки?

Добавлено через 1 час 18 минут
В общем сам разобрался с проблемой.
Надо было в первый файл всунуть using namespace std; а в конце файла посли int main() уже и setlocale(LC_ALL,"Russian");.
0
фрилансер
 Аватар для Алексей1153
6473 / 5694 / 1131
Регистрация: 11.10.2019
Сообщений: 15,171
12.12.2021, 20:51
Цитата Сообщение от Cawend Посмотреть сообщение
всунуть using namespace std;
это неправильно
0
 Аватар для Cawend
0 / 0 / 0
Регистрация: 28.11.2021
Сообщений: 17
12.12.2021, 21:30  [ТС]
Но работает. Прога работает, не крашается не ломается и компилятор не ругается.
Для меня в данный момент это вполне подходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2021, 21:30
Помогаю со студенческими работами здесь

Ошибка expected constructor, destructor, or type conversion before '(' toke
Возникает ошибка expected constructor, destructor, or type conversion before '(' toke в 7 и 16 строчке. #include &lt;iostream&gt; ...

Ошибка "expected constructor, destructor, or type conversion"
//ourfunc.cpp - îïðåäåëÿåò âàøó ñîáñòâåííóþ ôóíêöèþ #include &lt;iostream&gt; using namespace std; void simon(int); //ïðîòîòèï ôóíêöèè ...

[Error] expected constructor, destructor, or type conversion before '(' token
При попытке вставить в код setlconsoletitle выдает ошибку expected constructor, destructor, or type conversion before '(' token. В чём...

Ошибка expected constructor, destructor, or type conversion before '(' token
Извините за глупый вопрос, но всё же возникает ошибка expected constructor, destructor, or type conversion before '(' token Что от меня...

Ошибка: "expected constructor, destructor, or type conversion before '(' token"
connect(CommandLinkButton,clicked(),MainWindow,MainWindow::knopka()); Выдаёт ошибку expected constructor, destructor, or type conversion...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru