С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
74 / 74 / 13
Регистрация: 21.10.2010
Сообщений: 376

Строки и русский алфавит

21.11.2011, 10:59. Показов 4096. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В проге считываешь с файла строку на кириллице. Например: "ололо", длину выведет 10. Почему?
А как тогда со строкой, как с массивом в этом случае работать?
C++
1
temp.erase(5,6)
надо последний элемент вырезать слова из 6 букв, а не получается из-за длины строки странной.
C++
1
 temp[i]=char(tolower(temp[i]));//temp - строка
такая операция будет адекватно работать? Или надо по-другому?
Последний вопрос
C++
1
 temp[i]='ф';
- такое может правильно работать, или надо по-другому?

Добавлено через 10 часов 44 минуты
up!
пытался дебажить, а показывает мне значение temp 0 "" ?
я не понимаю, почему
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2011, 10:59
Ответы с готовыми решениями:

русский алфавит
//--------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> ...

Закодировать русский алфавит в цифру путем сложения цифр кода
Добрый день! Нужна прога, нужно забинтовать буквы точнее русский алфавит на цифры а=1, б=2 в=3 и тд соответсвенно последняя буква алфавита...

Вывести на экран алфавит строки
Нужно вывести на экран алфавит слова, то есть все различные буквы. К примеру, есть слово "alfavit", нужно чтобы вывело только...

12
Заблокирован
21.11.2011, 11:02
Hi4ko, запрос сформулируй по человечески. Телепатов нет.
0
74 / 74 / 13
Регистрация: 21.10.2010
Сообщений: 376
21.11.2011, 11:31  [ТС]
Цитата Сообщение от Bers Посмотреть сообщение
Hi4ko, запрос сформулируй по человечески. Телепатов нет.
Есть у меня задача. С .txt файла брать слова и манипулировать(удалить последний элемент, изменить букву в строке и т.д)
У меня с этим есть проблемы
Например:
input.txt "Александр Сергеевич Пушкин"
C++
1
2
3
4
5
6
7
8
int main()
{
    ifstream in("input.txt");
string s;
in>>s; 
s[0]='Л';
cout<<s<<" "<<int(s.length())<<endl; 
}
Output:
(Среда: Netbeans 7.0.1)
��лександр 18
��ергеевич 18
��ушкин 12

Как сделать, чтобы можно было поменять в строке любой символ на другой и поменять регистр первой буквы, если слово начинается с большой буквы? И удалить последний символ в строке(через erase() бы сделал, но длину строки показывает странную)?
0
Заблокирован
21.11.2011, 11:39
Длина строки не странная. Просто в Вашем случаее каждый символ занимает 2 байта.
Это значит, что при работе с такимми файлами надо , как минимум пользоваться не типом char, а типом wchar_t.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.11.2011, 11:54
.Hi4ko, дружище! Все это заморочки UNICODE. У него свои функции определения длины, типа wstrlen вместо strlen. Лично я стараюсь UNICODE по возможности избегать. И твой пост только укрепил меня в этом намерении. Также стараюсь избегать AnsiString, методы его чудовищны и один другого не понимает. А если никуда не деться (все компоненты на нем построены) делаю strcpy(b, A.c_str()), работаю с b, потом A = b; "Оно надежней, да к тому и тише". И еще безумно раздражает в dfm штуки вроде Caption = "\1020..." там где должен быть русский текст. Вот такой я ретроград - имею право?
Ну что ж поделаешь, плетемся мы в хвосте цивилизации, правила игры выдуманы не нами - терпи!
1
74 / 74 / 13
Регистрация: 21.10.2010
Сообщений: 376
21.11.2011, 12:36  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
.Hi4ko, дружище! Все это заморочки UNICODE. У него свои функции определения длины, типа wstrlen вместо strlen. Лично я стараюсь UNICODE по возможности избегать. И твой пост только укрепил меня в этом намерении. Также стараюсь избегать AnsiString, методы его чудовищны и один другого не понимает. А если никуда не деться (все компоненты на нем построены) делаю strcpy(b, A.c_str()), работаю с b, потом A = b; "Оно надежней, да к тому и тише". И еще безумно раздражает в dfm штуки вроде Caption = "\1020..." там где должен быть русский текст. Вот такой я ретроград - имею право?
Ну что ж поделаешь, плетемся мы в хвосте цивилизации, правила игры выдуманы не нами - терпи!
C++
1
2
3
4
5
6
{
        wchar_t b[40];
        string temp; 
        in>>temp;
        strcpy(b,temp.c_str());
}
не даёт нормально перевести. Char и wchar_t не согласуются же(
Как нормально сделать?)
0
Заблокирован
21.11.2011, 12:41
http://wm-help.net/books-onlin... 64-13.html
1
74 / 74 / 13
Регистрация: 21.10.2010
Сообщений: 376
21.11.2011, 13:01  [ТС]
Цитата Сообщение от Bers Посмотреть сообщение
признаюсь, я слаб, но я не могу найти, как явно преобразовать char[] в wchar_t[] в Linux. Точнее, простого примера программы не могу найти, где был бы char[] a и wchar_t [] b= a
0
Заблокирован
21.11.2011, 13:09
Цитата Сообщение от Hi4ko Посмотреть сообщение
ризнаюсь, я слаб, но я не могу найти, как явно преобразовать char[] в wchar_t[] в Linux. Точнее, простого примера программы не могу найти, где был бы char[] a и wchar_t [] b= a
Я - агент корпорации Зла. Так что...

http://mbv06.ucoz.ru/forum/19-30-1
0
74 / 74 / 13
Регистрация: 21.10.2010
Сообщений: 376
21.11.2011, 13:25  [ТС]
Цитата Сообщение от Bers Посмотреть сообщение
Я - агент корпорации Зла. Так что...

http://mbv06.ucoz.ru/forum/19-30-1
ну я переведу кодировку .txt файла, который весь на кириллице.
Никак мне это не поможет, я думаю)
Ситуация такая. Считываем слово с файла. Надо его преобразовать так, чтобы с ним можно было работать, как с обычным массивом.
C++
1
2
3
4
ifstream in("input.txt");
wstring s;
wchar_t a[40];
in>>s //не работает
C++
1
2
3
4
5
ifstream in("input.txt");
string s;
wchar_t a[40];
in>>s;
wcscpy(a,s.c_str()); //не работает, потому что char и wchar_t
Так что я до сих пор не нашёл правильного способа перевода(
0
Заблокирован
21.11.2011, 13:31
Цитата Сообщение от Hi4ko Посмотреть сообщение
ну я переведу кодировку .txt файла, который весь на кириллице.
Нет такой кодировки.

Твоя задача держать исходные данные в приемлемой кодировке.
И читать эти данные штатными средствами, которые понимают эту кодировку.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
21.11.2011, 15:44
C
1
2
char s[40];
in >> s;
0
Заблокирован
21.11.2011, 17:03
Там есть такая маленькая тонкость (хотя я сам еще серьезно не изучал этот вопрос), связанная с тем, что в некоторых случаях при открытии файла, место, откуда происходит считывание, находится в самом конце этого файла.
Рекомендую, поэтому, очень внимательно прочитать, что происходит при открытии файла на те или иные операции и действовать сообразно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2011, 17:03
Помогаю со студенческими работами здесь

Русский и строки
вот есть такой кусок кода, сравнивающий строки: while(getline(user_state, buffer)){ cout &lt;&lt; &quot;\n&quot;...

Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Как сделать так, чтобы после некоторых манипуляций в файл выводился русский текст без сбитой кодировки?

Русский ввод и русский вывод
Я знаю, что для того, чтобы был виден русский язык, я использую команду setlocale(LC_ALL,&quot;Russian&quot;) Для того, чтобы в...

Алфавит
You given N and one line of length N (1&lt;=N&lt;=1000)than consist of letter in interval A..Z. Your task is to find out how often each letter...

Алфавит
Каждой букве русского алфавита соответствует соответствующий номер А=1, Б=2 и т.д. Написать программу которая при вводе пользователем...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru