Форум программистов, компьютерный форум CyberForum.ru

Исправить ошибку в коде для сравнения строк - C++

Восстановить пароль Регистрация
 
 
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 15:47     Исправить ошибку в коде для сравнения строк #1
что-то не получается вот с этим:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
using namespace std;
int main ()
{
setlocale (LC_ALL,"Rus");
char s[20];
for(int i=0;i<20;i++)
cin>>s;
if (s=='Привет')
cout<<"Привет"<<endl; // тут не знаю,что сделать для задержки если нужно
return 0
}
как исправить? есть ошибка или сам ход построения кода не верен но затея всем надеюсь понятна
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 15:47     Исправить ошибку в коде для сравнения строк
Посмотрите здесь:

Исправить ошибку в коде C++
Исправить ошибку в коде с++ C++
C++ Исправить ошибку в коде
C++ исправить ошибку в коде
C++ Исправить ошибку в коде.
исправить ошибку в коде C++
Исправить ошибку в коде C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 15:50     Исправить ошибку в коде для сравнения строк #2
Цитата Сообщение от web-magician Посмотреть сообщение
if (s=='Привет')
Строки берутся в кавычки ", а не в одинарные '
К тому же сравнение строк выполняется с помощью функции if(strcmp(s,"Привет")==0)
Цитата Сообщение от web-magician Посмотреть сообщение
for(int i=0;i<20;i++)
cin>>s;
Не совсем ясно зачем вводить 1 слово 20 раз.
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
08.01.2014, 15:50     Исправить ошибку в коде для сравнения строк #3
Для сравнения строк, представленных как массив символов (char*), используется функция strcmp.
С кириллицей отдельная песня, предлагаю пока забить.
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 15:56  [ТС]     Исправить ошибку в коде для сравнения строк #4
Цитата Сообщение от Alex566 Посмотреть сообщение
Не совсем ясно зачем вводить 1 слово 20 раз.
можно без цикла?И будет ли считывать слово "Привет" ?
а если cin.getline(s,20) или нет разницы?

Добавлено через 1 минуту
Цитата Сообщение от 0x10 Посмотреть сообщение
Для сравнения строк, представленных как массив символов (char*), используется функция strcmp.
а как ее применить? в моем примере
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 15:59     Исправить ошибку в коде для сравнения строк #5
Цитата Сообщение от web-magician Посмотреть сообщение
можно без цикла?И будет ли считывать слово "Привет" ?
а если cin.getline(s,20) или нет разницы?
Одно слово можно ввести просто потоком. cin>>s; разделением потока является пробел по этому 1 слово введется. +Как уже говорил 0x10 русский текст лучше пока не трогать. Замените лучше на английские слова.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 15:59     Исправить ошибку в коде для сравнения строк #6
Цитата Сообщение от web-magician Посмотреть сообщение
а если cin.getline(s,20) или нет разницы?
В данном случае, нет.
Цитата Сообщение от web-magician Посмотреть сообщение
а как ее применить? в моем примере
2 пост.
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 16:08  [ТС]     Исправить ошибку в коде для сравнения строк #7
короче получается,что заморочка со словами русского языка...
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
0x10
08.01.2014, 16:11
  #8

Не по теме:

Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
При такой... кхм... формулировке задачи, да и с учетом вопроса в первом посте я бы предложил опять же пока забить.

alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 16:21     Исправить ошибку в коде для сравнения строк #9
Цитата Сообщение от web-magician Посмотреть сообщение
короче получается,что заморочка со словами русского языка...
Насчёт этого вам способ предлагался (в какой-то из тем), и как-бы, вы написали, что поняли:
C++
1
2
3
4
5
6
7
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
В свойствах консоли выбрать шрифт: Lucida Console
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 16:26     Исправить ошибку в коде для сравнения строк #10
Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
Ну ну.. =) Вот вам наводка в помощь найти первые 10 файлов с расширением .doc
Хотя как по мне 0x10 сказал очень даже по теме.
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 18:00  [ТС]     Исправить ошибку в коде для сравнения строк #11
Ошибка 2 error C2664: FindFirstFileW: невозможно преобразовать параметр 1 из "const char [7]" в "LPCWSTR"
Ошибка 1 error C2664: SetCurrentDirectoryW: невозможно преобразовать параметр 1 из "const char [17]" в "LPCWSTR"
3 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
4 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"

Добавлено через 25 секунд
студия 2012
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 18:15     Исправить ошибку в коде для сравнения строк #12
Цитата Сообщение от web-magician Посмотреть сообщение
Ошибка 2 error C2664: FindFirstFileW: невозможно преобразовать параметр 1 из "const char [7]" в "LPCWSTR"
Ошибка 1 error C2664: SetCurrentDirectoryW: невозможно преобразовать параметр 1 из "const char [17]" в "LPCWSTR"
3 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
4 IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
Проект>Свойства>Свойства конфигурации>Общие>Набор символов>Использовать многобайтовую кодировку
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5665 / 3144 / 356
Регистрация: 29.11.2010
Сообщений: 8,420
08.01.2014, 18:20     Исправить ошибку в коде для сравнения строк #13
Используйте для сравнения wcscoll и wchar_t*, либо wstring и встроенный оператор ==
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
09.01.2014, 00:47  [ТС]     Исправить ошибку в коде для сравнения строк #14
что-то не работает? или мешает в начале кода это

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

Добавлено через 4 минуты
да мешали они только вот не работает она на 2 любые клавиши нажимаешь и консоль закрывается

Добавлено через 2 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
Используйте для сравнения wcscoll и wchar_t*, либо wstring и встроенный оператор ==
я не на столько хорошо знаю этот язык и только учусь ему поэтому не понимаю как...

Добавлено через 36 секунд
Цитата Сообщение от Alex566 Посмотреть сообщение
Проект>Свойства>Свойства конфигурации>Общие>Набор символов>Использовать многобайтовую кодировку
помогло

Добавлено через 5 часов 44 минуты
так почему консоль ничего не ищет и после 2 нажатий на клавиши (любые) закрывается?
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
09.01.2014, 01:42     Исправить ошибку в коде для сравнения строк #15
Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
Где должны находиться ключевые слова- в файлах или в их названиях? Секёшь прокол?

Эта херь ищет слова в файлах, рекурсивно. Там в начале в макросе, нужно задать, есть ли у файлов расширение.

C++
1
#define rash
Ну или закомментить его, если ищется по ВСЕМ файлам. Если ищется по файлам с определённым расширение, ниже надо это расширение прописать.

А ещё ниже, в исходнике же, нужно написать искомую строку и полный путь к папке, где и происходит, собственно, рекурсивный поиск. Это у меня настройки такие, для себя писал
Вложения
Тип файла: rar как_искать_строку_во_все_файлах_рекурсивно.rar (290.7 Кб, 3 просмотров)
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.01.2014, 11:08     Исправить ошибку в коде для сравнения строк #16
Цитата Сообщение от web-magician Посмотреть сообщение
что-то не работает? или мешает в начале кода это
SetConsoleCP(1251);
SetConsoleOutputCP(1251); Добавлено через 4 минуты
да мешали они только вот не работает она на 2 любые клавиши нажимаешь и консоль закрывается
Что, где не работает?
Миниатюры
Исправить ошибку в коде для сравнения строк   Исправить ошибку в коде для сравнения строк  
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
09.01.2014, 14:59  [ТС]     Исправить ошибку в коде для сравнения строк #17
Цитата Сообщение от alsav22 Посмотреть сообщение
Что, где не работает?
тут работает я не это имел ввиду,а поиск файла.И спасибо

Добавлено через 11 минут
Цитата Сообщение от kravam Посмотреть сообщение
Где должны находиться ключевые слова- в файлах или в их названиях? Секёшь прокол?

Эта херь ищет слова в файлах, рекурсивно. Там в начале в макросе, нужно задать, есть ли у файлов расширение.

C++
1
#define rash
Ну или закомментить его, если ищется по ВСЕМ файлам. Если ищется по файлам с определённым расширение, ниже надо это расширение прописать.

А ещё ниже, в исходнике же, нужно написать искомую строку и полный путь к папке, где и происходит, собственно, рекурсивный поиск. Это у меня настройки такие, для себя писал


нельзя сделать это все интуитивно понятным...есть писанный код программы которая работает через консоль прописал туда к примеру название песни или с расширением для более точного поиска или просто без расширения и чтобы программа искала и выводила найденный результат на экран и еще можно чтобы записывала в файл,а в файл в свою очередь сделать перезаписывающим через ios::app и будет оставаться последний искомый файл...при запуске программы можно сделать сразу считывание из файла и вывода на экран чтобы был виден последний искомый файл. если бы я все это смог бы сделать не просил бы помощи и заранее извиняюсь за возможные глупые вопросы и пожелания так как я только новичок в этом деле.

Добавлено через 21 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Что, где не работает?
а он у тебя работает без setlocale (LC_ALL,"Rus"); ?
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.01.2014, 15:01     Исправить ошибку в коде для сравнения строк #18
Цитата Сообщение от web-magician Посмотреть сообщение
а он у тебя работает без setlocale (LC_ALL,"Rus"); ?
На скринах код виден.
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
09.01.2014, 15:05  [ТС]     Исправить ошибку в коде для сравнения строк #19
видимо у тебя компилятор другой у меня vs2012 и что означает эта строка (cin>>s).get(); меня учат но с этим я не сталкивался?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 15:16     Исправить ошибку в коде для сравнения строк
Еще ссылки по теме:

C++ Исправить ошибку в коде
Multiset: исправить ошибку в коде C++
Описание класса для определения одномерных массивов строк. Исправить ошибку C++
C++ Исправить ошибку в коде. С++
C++ Исправить ошибку в коде

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

Или воспользуйтесь поиском по форуму:
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.01.2014, 15:16     Исправить ошибку в коде для сравнения строк #20
Видимо, у меня 10-я.
Цитата Сообщение от web-magician Посмотреть сообщение
и что означает эта строка (cin>>s).get();
Чтобы остановка в конце кода сработала (cin.get()), извлекается '\n' из потока. Можно в две строки записать:
C++
1
2
cin>>s;
cin.get();
Yandex
Объявления
09.01.2014, 15:16     Исправить ошибку в коде для сравнения строк
Ответ Создать тему
Опции темы

Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru