Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/88: Рейтинг темы: голосов - 88, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 02.08.2015
Сообщений: 124

Как сравнить элементы массива string и char?

04.02.2016, 09:37. Показов 18901. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два массива: mas_ascii и str содержащий текст с файла

C++
1
2
3
4
5
6
char mas_ascii [256];
for (int i = 0; i < 256; ++i)
        {   
            mas_ascii[i] = Convert::ToChar(i);
        }
        }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
std::vector <std::string> str;
    std::string buff;
    std::ifstream ifs("in.txt", std::ios_base::binary);
    if (!ifs) std::cout << "Unable to open file in.txt" << std::endl;  
 
    while (getline(ifs, buff))
        {   
            str.push_back(buff);
        }   
 
 
    for (int i = 0; i < str.size(); i++)
        {
            std::cout << str[i];
        }
    std::cout << std::endl;
как сравнить буквы в тексте с массивом mas_ascii, у меня что то не то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 for (int i = 0; i < str.size(); i++)
    {
        for (int j = 0; j < 256; j++)
 
            {
                
                if(strcmp(str[i],mas_ascii[j])=0)
                {
                    
                    //код программы
                }   
            }
    }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2016, 09:37
Ответы с готовыми решениями:

Как сравнить два char string
подскажите сделал задачу которая проверит является ли данная строка палиндромом вот код #include &lt;iostream&gt; #include...

Как сравнить string и char[] по содержимому?
ак сравнить string и char по содержимому?

C++ как сравнить кавычки с char и string
В общем, приведу лучше кусочек кода, так понятнее будет) switch (buff){ case '&quot;': \\тут внутри одинарных кавычек двойная ...

24
0 / 0 / 0
Регистрация: 02.08.2015
Сообщений: 124
04.02.2016, 14:09  [ТС]
Студворк — интернет-сервис помощи студентам
_Scorpius_, Спасибо огромное! Надо перекурить а то голова сейчас взорвется!

Добавлено через 14 минут
Я правильно понял:
Сперва он берет первую букву и прогоняет её по массиву.
Потом вторую и прогоняет сперва первую, потом вторую.
Потом третью и прогоняет сперва первую потом вторую, потом третью.

Хотя код работает нормально почему? Что то я недопонимаю.

Добавлено через 3 минуты
Или
C++
1
for(int k = 0; k < a.size(); ++k)
и
C++
1
for (int i = 0; i < str.size(); i++)
делают одно и то же из за преобразования
C++
1
std::string a = str[i];
?
0
63 / 61 / 37
Регистрация: 01.04.2015
Сообщений: 116
04.02.2016, 14:15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int i = 0; i < str.size(); i++) // цикл по массиву (вектору) строк
    {
        std::string a = str[i]; // копируем строку с массива строк в переменную [B]a[/B]
        for(int k = 0; k < a.size(); ++k) // цикл по символам строки
        {
            for (int j = 0; j < 256; j++) // цикл по символам символьного массива
            {
                if(a[k]==mas_ascii[j]) // сравнение символа строки с символом массива символов
                {
                    std::cout<<"сработало"<<std::endl;
                }   
                else
                    std::cout<<"не сработало"<<std::endl;
            }
        }
    }
1
0 / 0 / 0
Регистрация: 02.08.2015
Сообщений: 124
04.02.2016, 17:19  [ТС]
Вот в чем проблема я не понимал до сего момента что str[i] это массива строк а я думал что массив символов

Добавлено через 2 часа 57 минут
Что то не в порядки с параметрами getline, что может быть?
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
std::vector <std::string> strresult;
    //Открваем файл для записи шифрованного текста
    std::ofstream ofs("out.txt");
    if(ofs.is_open())
    {       
        for (int i = 0; i < str.size(); i++)
            {
                std::string a = str[i];
                for(int k = 0; k < a.size(); ++k)
                {
                    for (int j = 0; j < 256; j++)
                    {
                        if(a[k]==mas_ascii[j])
                        {
                            int jx=j;
                            int xx = jx/26;
                            int yx = jx%26;
 
                                // while ( getline (std::cin, mas))
                                // {
                                     strresult.push_back(mas[xx][yx]); 
                                // }
                                 std::cin.clear();
 
                            std::cout<<"сработало"<<std::endl;
                        }  
                        else std::cout<<"не сработало"<<std::endl;
                    }
                }
            }
 
        /*for (int i = 0; i < strresult.size(); i++)
            {
                std::cout << strresult[i];
            }*/
        ofs.close();
    }
    else
        std::cerr << "Unable to open file out.txt" << std::endl;
0
63 / 61 / 37
Регистрация: 01.04.2015
Сообщений: 116
04.02.2016, 17:28
В чем именно заключается проблема?
Не вижу объявления mas.
Цитата Сообщение от ikudesnik Посмотреть сообщение
getline (std::cin, mas)
Цитата Сообщение от ikudesnik Посмотреть сообщение
strresult.push_back(mas[xx][yx]);
0
0 / 0 / 0
Регистрация: 02.08.2015
Сообщений: 124
04.02.2016, 18:08  [ТС]
Вот весь код:
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// ConsoleApplication4.cpp: главный файл проекта.
 
#include "stdafx.h"
using namespace System;
#include <cctype>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <locale>
 
const int row = 26;
const int col = 26;
const int len = 3;
char mas[row][col][len];
char mas_ascii[256];
 
int main() 
{
      std::locale current_locale("");
      std::locale::global(current_locale);
 
    for (int i=0; i<row; i++)
        for (int j=0; j<col; j++)
        {
            mas[i][j][0] = i+'A';
            mas[i][j][1] = j+'A';
            mas[i][j][2] = '\0';
        }
 
        // Выводим на экран таблицу шифрования
   /* for (int i=0; i<row; i++)
    {
        for (int j=0; j<col; j++)
            std::cout<<mas[i][j]<<" ";
        std::cout<<std::endl;
    }*/
 
    //Заполняем таблицу с символами ASCII
     for (int i = 0; i < 256; ++i)
        {   
            mas_ascii[i] = Convert::ToChar(i);
        }
    //Выводим на экран массив ascii
   /* for (int i = 0; i < 256; ++i)
    {
    std::cout << i << " " << mas_ascii[i]<< std::endl;
    }*/
 
 
    //Открываем файл для чтение исходного текста
    std::vector <std::string> str;
    std::string buff;
    std::ifstream ifs("in.txt", std::ios_base::binary);
    if (!ifs) std::cout << "Unable to open file in.txt" << std::endl;  
 
    while (getline(ifs, buff))
        {   
            str.push_back(buff);
        }   
 
   /*for (int i = 0; i < str.size(); i++)
        {
            std::cout << str[i];
        }
    std::cout << std::endl; */
 
    std::vector <std::string> strresult;
    //Открваем файл для записи шифрованного текста
    std::ofstream ofs("out.txt");
    if(ofs.is_open())
    {       
        for (int i = 0; i < str.size(); i++)
            {
                std::string a = str[i];
                for(int k = 0; k < a.size(); ++k)
                {
                    for (int j = 0; j < 256; j++)
                    {
                        if(a[k]==mas_ascii[j])
                        {
                            int jx=j;
                            int xx = jx/26;
                            int yx = jx%26;
                            ofs << mas[xx][yx];                        
                                // while ( getline (std::cin, mas))
                                // {
                                    // strresult.push_back(mas[xx][yx]); 
                                // }
                               //  std::cin.clear();
 
                            
                        }  
                        
                    }
                }
            }
 
        /*for (int i = 0; i < strresult.size(); i++)
            {
                std::cout << strresult[i];
            }*/
        ofs.close();
    }
    else
        std::cerr << "Unable to open file out.txt" << std::endl;
    std::system("pause");
    return 0;
}
Добавлено через 6 минут
Проблема заключается в том чтоб записать в strresult обработанный массив:
C++
1
2
3
4
while ( getline (std::cin, mas))
                                 {
                                    strresult.push_back(mas[xx][yx]); 
                                 }
Добавлено через 28 минут
Ух ты все и без while работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2016, 18:08

Как копировать отдельные элементы из string в const char по C++ 98?
в зависимости от выполнения условия нужно скопировать только нужные символы, чтобы потом преобразовать их к int через atoi. Подскажите...

Как сравнить два элемента массива типа string?
Задание. Вычислить какая компания чаще всего участвовала в роли истца. У меня есть массив в котором хранятся названия компаний ...

есть массив char. есть строка string. как присвоить значению string-a значение char-a?
есть массив char. есть строка string. как присвоить значению string-a значение char-a?

Сравнить элементы типа char
с++ Вот есть структура **:** часы и минуты struct date { char h; char m; };

Как сравнить char и const char?
Очередной раз столкнулся с проблемкой, сравнивая объекты из массива (char) нужно сравнить с const char, но в массив я записываю данные...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru