Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Джон
0 / 0 / 1
Регистрация: 06.03.2012
Сообщений: 40
#1

Тривиальная ошибка при типе string - C++

11.03.2012, 19:41. Просмотров 1112. Ответов 18
Метки нет (Все метки)

Написал код для сортировки текста в алфавитном порядке. Делал все вроде правильно, как говорится, по книжке, но при компиляции выдает очень много ошибок, и мне кажется, что это связано с объявлением set<string>. Помогите исправить ошибку, пожалуйста
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
#include<stdio.h>
#include<set>
#include <ctype.h>
#include <string>
 
 
 set<string> SetS;
 set<string>::iterator iter;
char s[201];
 
 int main()
 {
scanf("%[^a-zA-Z]",s);
 
 
while(scanf("%[a-zA-Z]",s) == 1)
{
  for(int i = 0; i < strlen(s); i++) s[i] = tolower(s[i]);
  SetS.insert(s);
  scanf("%[^a-zA-Z]",s);
}
 
for(iter = SetS.begin(); iter != SetS.end(); iter++)
  printf("%s\n",(*iter).c_str());
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2012, 19:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Тривиальная ошибка при типе string (C++):

Ошибка в типе данных 'String' and 'System::String'
Всем привет. помогите, выдает ошибку File1.cpp(40): E2015 Ambiguity between...

Ошибка при присвоении argv[1] переменной string. Как конвертировать к типу string?
&quot;call of an object of a class type without appropriate operator() or...

Ошибка в типе данных
недавно начала учиться программировать в си++, не могу понять в чем ошибка:...

Ошибка в типе переменной
Здравствуйте, у меня проблема. Дали задачу, решаю не сразу все, а по...

Ошибка в типе переменных
Подскажите пожалуйста в чем ошибка. Есть задача:&quot;Задать массив структур...

Ошибка в возвращаемом типе
Помогите пожалуйста, у меня уже волосы дыбом встают. Почему компилятор...

18
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 19:47 #2
Джон, set и string находятся внутри пространства имен std.
Используйте using или пишите std::set, std::string.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.03.2012, 20:03 #3
string.h а не string... string это заголовочный файл C++ класса string. Да и set оттуда же.
0
Джон
0 / 0 / 1
Регистрация: 06.03.2012
Сообщений: 40
11.03.2012, 20:05  [ТС] #4
спасибо, помогло.
0
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 20:07 #5
Джон, liveworkspace.org небось?
0
Джон
0 / 0 / 1
Регистрация: 06.03.2012
Сообщений: 40
11.03.2012, 20:17  [ТС] #6
Цитата Сообщение от Toshkarik Посмотреть сообщение
string.h а не string... string это заголовочный файл C++ класса string. Да и set оттуда же.
ага, только если я напишу без h, тогда работает, а если так, как Вы говорите, тогда нет
0
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 20:21 #7
Джон, не слушайте. <string> и <set> пишутся без .h. А <ctype.h> на самом деле пишется <cctype>
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.03.2012, 20:27 #8
gooseim, В C++ не string а cstring, в данном коде нет ничего используемого из <string>, как я понял код на C а <string> это файл C++.
0
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 20:29 #9
Toshkarik,
Цитата Сообщение от Toshkarik Посмотреть сообщение
в данном коде нет ничего используемого из <string>
set<string> SetS;
set<string>::iterator iter;
И даже здесь?
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.03.2012, 20:30 #10
gooseim, извиняюсь, проглядел, пора отдыхать
0
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 20:31 #11
Цитата Сообщение от Toshkarik Посмотреть сообщение
В C++ не string а cstring
В c++ есть и то и то. cstring - библиотека сишных функций, а string - собственно класс string.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.03.2012, 20:32 #12
gooseim, я это и имел ввиду. cstring для работы со строками в стиле C. И тут он нужен, ну или string.h, так как strlen оттуда.
0
modwind
52 / 52 / 2
Регистрация: 09.03.2012
Сообщений: 101
11.03.2012, 20:34 #13
Цитата Сообщение от Джон Посмотреть сообщение
scanf("%[^a-zA-Z]",s);
Я что-то упустил в изучении языка C++ или с каких пор scanf поддерживает регулярные выражения?
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.03.2012, 20:36 #14
Да мне вообще не понятно, зачем смешить C и C++.
0
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 20:37 #15
Цитата Сообщение от Toshkarik Посмотреть сообщение
И тут он нужен, ну или string.h, так как strlen оттуда
Теоретически да. А по факту зависит от компилятора.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.03.2012, 20:43 #16
Прототип находится именно там, не думаю что стоит в этом плане рассчитывать на компиляторы.
0
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 20:46 #17
Цитата Сообщение от modwind Посмотреть сообщение
Я что-то упустил в изучении языка C++ или с каких пор scanf поддерживает регулярные выражения
Смотря что понимать под термином "регулярное выражение". Си поддерживает своеобразные регулярные выражения с самого начала создания языка.

Цитата Сообщение от Toshkarik Посмотреть сообщение
Да мне вообще не понятно, зачем смешить C и C++.
Смеху им мало, я думаю. Слез больше)
Все сейчас смешивают си и си++. Надо принять как есть.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
11.03.2012, 20:48 #18
Цитата Сообщение от gooseim Посмотреть сообщение
Смеху им мало
Извиняюсь, там очепятка Имел ввиду смешивать
0
gooseim
Эксперт С++
510 / 414 / 92
Регистрация: 23.09.2010
Сообщений: 1,159
11.03.2012, 20:48 #19
Цитата Сообщение от Toshkarik Посмотреть сообщение
Прототип находится именно там, не думаю что стоит в этом плане рассчитывать на компиляторы.
Конечно, нет.
0
11.03.2012, 20:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2012, 20:48
Привет! Вот еще темы с решениями:

Ошибка компилятора при выводе string
Stock::Stock(const char * co, int n, double pr) { cout&lt;&lt;&quot;Вызван конструктор...

Ошибка при освобождении памяти массива string
Вот тут вот при delete возникает ошибка, и пишет &quot;The program ' Array...

Ошибка при посимвольной записи из строки char в строку string
Это фрагмент конструктора класса: ifstream fin(&quot;client.txt&quot;); ...

При разыменовании содержимого контейнера vector<string*> возникает ошибка
Добрый день и с Новым Годом, господа! Обращаюсь к вам со странной проблемой -...


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

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

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