Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

08.01.2014, 15:47. Просмотров 901. Ответов 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
}
как исправить? есть ошибка или сам ход построения кода не верен но затея всем надеюсь понятна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 15:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исправить ошибку в коде для сравнения строк (C++):

Описание класса для определения одномерных массивов строк. Исправить ошибку - C++
Программа иногда работает правильно а иногда вылетает с ошибкой Unhandled exception at 0x009C12F8 in HelloWorld.exe: 0xC0000005: Access...

Исправить ошибку в коде - C++
Задача простейшая, но вот реализовать не получается правильно, вот условие : Написать программу вычисления стоимости покупки с учетом...

Исправить ошибку в коде с++ - C++
Помогите исправить ошибку в коде: CString m_showlink; CRec1-&gt;GetFieldValue(&quot;Ïóòü&quot;,CValue); m_showlink = CValue.pbVal; ...

Исправить ошибку в коде - C++
//--------------------------------------------------------------------------- #pragma hdrstop #include &lt;iterator&gt; #include...

Исправить ошибку в коде - C++
где ошибка? #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main () { setlocale(LC_ALL,&quot;Russian&quot;); double...

Исправить ошибку в коде - C++
помогите найти ошибку . студия 2012 #include &lt;iostream&gt; #include &quot;queue.h&quot; using namespace std; int main() { Queue a,c;...

23
Alex566
241 / 153 / 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 раз.
1
0x10
2526 / 1706 / 257
Регистрация: 24.11.2012
Сообщений: 4,268
08.01.2014, 15:50 #3
Для сравнения строк, представленных как массив символов (char*), используется функция strcmp.
С кириллицей отдельная песня, предлагаю пока забить.
1
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.
а как ее применить? в моем примере
0
Alex566
241 / 153 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 15:59 #5
Цитата Сообщение от web-magician Посмотреть сообщение
можно без цикла?И будет ли считывать слово "Привет" ?
а если cin.getline(s,20) или нет разницы?
Одно слово можно ввести просто потоком. cin>>s; разделением потока является пробел по этому 1 слово введется. +Как уже говорил 0x10 русский текст лучше пока не трогать. Замените лучше на английские слова.
0
alsav22
5431 / 4826 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.01.2014, 15:59 #6
Цитата Сообщение от web-magician Посмотреть сообщение
а если cin.getline(s,20) или нет разницы?
В данном случае, нет.
Цитата Сообщение от web-magician Посмотреть сообщение
а как ее применить? в моем примере
2 пост.
0
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
08.01.2014, 16:08  [ТС] #7
короче получается,что заморочка со словами русского языка...
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
0
0x10
08.01.2014, 16:11
  #8

Не по теме:

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

0
alsav22
5431 / 4826 / 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
1
Alex566
241 / 153 / 18
Регистрация: 03.04.2013
Сообщений: 317
08.01.2014, 16:26 #10
Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
Ну ну.. =) Вот вам наводка в помощь найти первые 10 файлов с расширением .doc
Хотя как по мне 0x10 сказал очень даже по теме.
1
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
0
Alex566
241 / 153 / 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"
Проект>Свойства>Свойства конфигурации>Общие>Набор символов>Использовать многобайтовую кодировку
1
MrGluck
Модератор
Эксперт CЭксперт С++
7523 / 4661 / 703
Регистрация: 29.11.2010
Сообщений: 12,733
08.01.2014, 18:20 #13
Используйте для сравнения wcscoll и wchar_t*, либо wstring и встроенный оператор ==
1
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 нажатий на клавиши (любые) закрывается?
0
kravam
быдлокодер
1704 / 891 / 45
Регистрация: 04.06.2008
Сообщений: 5,507
09.01.2014, 01:42 #15
Цитата Сообщение от web-magician Посмотреть сообщение
есть предложение написать код программы для поиска данных с диска (то есть с жесткого диска) и чтобы и скала по ключевым словам,как реализовать интересно подскажите пожалуйста?
Где должны находиться ключевые слова- в файлах или в их названиях? Секёшь прокол?

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

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

А ещё ниже, в исходнике же, нужно написать искомую строку и полный путь к папке, где и происходит, собственно, рекурсивный поиск. Это у меня настройки такие, для себя писал
1
Вложения
Тип файла: rar как_искать_строку_во_все_файлах_рекурсивно.rar (290.7 Кб, 3 просмотров)
09.01.2014, 01:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 01:42
Привет! Вот еще темы с ответами:

Исправить ошибку в коде - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std; const int MaxIter=500; int matn () { double...

исправить ошибку в коде - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;locale.h&gt; #include &lt;stdlib.h&gt; #define OUTPUT_FILE...

Исправить ошибку в коде. С++ - C++
Помогите исправить ошибку. Ошибка заключается в некорректной работе при вводе сообщения с пробелом. #include &quot;stdafx.h&quot; #include...

исправить ошибку в коде - C++
мне вот недавно скинули программу, только она не работает, ругается на &quot;выражение должно иметь тип класса&quot;. не могу понять и вообще саму...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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