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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
#1

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

08.01.2014, 15:47. Просмотров 851. Ответов 23
Метки нет (Все метки)

что-то не получается вот с этим:
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
}
как исправить? есть ошибка или сам ход построения кода не верен но затея всем надеюсь понятна
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
08.01.2014, 15:50     Исправить ошибку в коде для сравнения строк #3
Для сравнения строк, представленных как массив символов (char*), используется функция strcmp.
С кириллицей отдельная песня, предлагаю пока забить.
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
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 15:59     Исправить ошибку в коде для сравнения строк #5
Цитата Сообщение от web-magician Посмотреть сообщение
можно без цикла?И будет ли считывать слово "Привет" ?
а если cin.getline(s,20) или нет разницы?
Одно слово можно ввести просто потоком. cin>>s; разделением потока является пробел по этому 1 слово введется. +Как уже говорил 0x10 русский текст лучше пока не трогать. Замените лучше на английские слова.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 15:59     Исправить ошибку в коде для сравнения строк #6
Цитата Сообщение от web-magician Посмотреть сообщение
а если cin.getline(s,20) или нет разницы?
В данном случае, нет.
Цитата Сообщение от web-magician Посмотреть сообщение
а как ее применить? в моем примере
2 пост.
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
5416 / 4812 / 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
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 16:26     Исправить ошибку в коде для сравнения строк #10
Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
Ну ну.. =) Вот вам наводка в помощь найти первые 10 файлов с расширением .doc
Хотя как по мне 0x10 сказал очень даже по теме.
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
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
Модератор
Эксперт CЭксперт С++
7172 / 4338 / 633
Регистрация: 29.11.2010
Сообщений: 11,785
08.01.2014, 18:20     Исправить ошибку в коде для сравнения строк #13
Используйте для сравнения wcscoll и wchar_t*, либо wstring и встроенный оператор ==
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 нажатий на клавиши (любые) закрывается?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 01:42     Исправить ошибку в коде для сравнения строк
Еще ссылки по теме:
C++ Исправить ошибку в коде. С++
Исправить ошибку в коде с++ C++
C++ исправить ошибку в коде
исправить ошибку в коде C++
C++ Исправить ошибку в коде

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

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

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

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

А ещё ниже, в исходнике же, нужно написать искомую строку и полный путь к папке, где и происходит, собственно, рекурсивный поиск. Это у меня настройки такие, для себя писал
Вложения
Тип файла: rar как_искать_строку_во_все_файлах_рекурсивно.rar (290.7 Кб, 3 просмотров)
Yandex
Объявления
09.01.2014, 01:42     Исправить ошибку в коде для сравнения строк
Ответ Создать тему
Опции темы

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