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

Компилятор выдает ошибку "Could not find a match for 'stringstream" - C++

Восстановить пароль Регистрация
 
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
26.09.2016, 14:30     Компилятор выдает ошибку "Could not find a match for 'stringstream" #1
Добрый вечер форумчане!

Мне необходимо разбить строку полученную из базы данных на слова. На данный момент я смог получить необходимое значение из базы данных и занести его в переменную. Но однако компилятор билдера жалуется на строку "stringstream s(IDQes); "
И выдает ошибку:

[BCC32 Error] Unit1.cpp(60): E2285 Could not find a match for 'stringstream::basic_stringstream(UnicodeString)'
Full parser context
Unit1.cpp(37): parsing: void _fastcall TForm1::Button1Click(TObject *)

Самое смешное, что в визуал студии все прекрасно работает!
Буду признателен за любую помощь

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
#include <sstream>
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
    String  IDQes;
 
    GAMEQUERY->SQL->Clear();                                                         //поиск варианта с наибольшей вероятностью
    GAMEQUERY->SQL->Add("SELECT ИмяПерсонажа,IDвопросов FROM ИгровыеОтветы WHERE НачальнаяВероятность = (SELECT MAX(НачальнаяВероятность) FROM ИгровыеОтветы)");
    GAMEQUERY->Open();
    IDQes = GAMEQUERY->FieldByName("IDвопросов")->AsString;         
 
/////////////Разбитие строки на слова
 
    stringstream s(IDQes);      
    vector <string> svec;                                                           
 
    for (string word; s >> word; svec.push_back(word));                                //в этом цикле строка разбивается на слова
    {
    //  copy(svec.begin(), svec.end(), ostream_iterator <string>(cout, "\n"));          //вывод слов на экран
    }
 
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
26.09.2016, 15:41     Компилятор выдает ошибку "Could not find a match for 'stringstream" #2
Коварный, stringstream, vector и прочее находятся в пространстве имен std.
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
26.09.2016, 15:58  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #3
Спасибо, дописал: using namespace std;
Правда теперь ошибка изменилась на: [BCC32 Error] Unit1.cpp(68): E2451 Undefined symbol 'Stringstream'

В интернете говорят, что в этом случае нужно подключить модуль <sstream>. Однако он и так подключен
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
26.09.2016, 16:04     Компилятор выдает ошибку "Could not find a match for 'stringstream" #4
Stringstream
Должно быть с маленькой буквы. Ругается на какую строчку?
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
26.09.2016, 16:10  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #5
На 19тую
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
26.09.2016, 16:20     Компилятор выдает ошибку "Could not find a match for 'stringstream" #6
Конструктор stringstream может принимать только объект типа std::string, конвертируйте String в std::string.
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
26.09.2016, 16:26  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #7
А для этого недостаточно объявить using namespace std; ?
nmcf
4270 / 3701 / 1246
Регистрация: 14.04.2014
Сообщений: 14,493
26.09.2016, 16:37     Компилятор выдает ошибку "Could not find a match for 'stringstream" #8
Разумеется, нет.
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
26.09.2016, 16:46  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #9
То есть код будет выглядеть примерно так, я правильно понимаю?

C++
1
2
3
4
5
6
7
8
9
10
 std::string  IDQes;
 
    GAMEQUERY->SQL->Clear();                                                         //поиск варианта с наибольшей вероятностью
    GAMEQUERY->SQL->Add("SELECT ИмяПерсонажа,IDвопросов FROM ИгровыеОтветы WHERE НачальнаяВероятность = (SELECT MAX(НачальнаяВероятность) FROM ИгровыеОтветы)");
    GAMEQUERY->Open();
    IDQes = GAMEQUERY->FieldByName("IDвопросов")->AsString;         
 
/////////////Разбитие строки на слова
 
    std::stringstream s(IDQes)
nmcf
4270 / 3701 / 1246
Регистрация: 14.04.2014
Сообщений: 14,493
26.09.2016, 17:53     Компилятор выдает ошибку "Could not find a match for 'stringstream" #10
А оно так работает? Через c_str(), наверное, надо.
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
26.09.2016, 18:05  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #11
Написал string IDQes; с маленькой буквы. Теперь компилятор перестал ругаться на строчку stringstream s(IDQes); .
Однако теперь он кричит на строчку:IDQes = GAMEQUERY->FieldByName("IDвопросов")->AsString;

И выдает такую ошибку: [BCC32 Error] Unit1.cpp(57): E2285 Could not find a match for 'operator string::=(UnicodeString)'
Full parser context
Unit1.cpp(39): parsing: void _fastcall TForm1::Button1Click(TObject *)

C++
1
2
3
4
5
6
7
8
9
10
string  IDQes;
 
    GAMEQUERY->SQL->Clear();                                                         //поиск варианта с наибольшей вероятностью
    GAMEQUERY->SQL->Add("SELECT ИмяПерсонажа,IDвопросов FROM ИгровыеОтветы WHERE НачальнаяВероятность = (SELECT MAX(НачальнаяВероятность) FROM ИгровыеОтветы)");
    GAMEQUERY->Open();
    IDQes = GAMEQUERY->FieldByName("IDвопросов")->AsString;         
 
/////////////Разбитие строки на слова
 
    stringstream s(IDQes)
Добавлено через 7 минут
И да и нет=)
пропала ошибка в строке stringstream s(IDQes).
Однако появилась другая ошибка в строчке IDQes = GAMEQUERY->FieldByName("IDвопросов")->AsString;
nmcf
4270 / 3701 / 1246
Регистрация: 14.04.2014
Сообщений: 14,493
26.09.2016, 18:27     Компилятор выдает ошибку "Could not find a match for 'stringstream" #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если там UnicodeString, то надо использовать wstring и wstringstream. Так попробуй:
C++
1
2
3
4
wstring  IDQes;
UnicodeString us = AMEQUERY->FieldByName("IDвопросов")->AsString;
IDQes = us.c_str();
wstringstream s(IDQes)
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
27.09.2016, 03:36  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #13
Спасибо, заработало! Однако теперь компилятор уже ругается на строчку:
for (string word; s >> word; svec.push_back(word));

И выдает ошибку:
[BCC32 Error] Unit1.cpp(77): E2285 Could not find a match for 'operator UnicodeString::=(wstringstream)'

Насколько понимаю тут нужна так называемая перезагрузка оператора или инициализация какой-то дополнительной библиотеки?
nmcf
4270 / 3701 / 1246
Регистрация: 14.04.2014
Сообщений: 14,493
27.09.2016, 08:15     Компилятор выдает ошибку "Could not find a match for 'stringstream" #14
Ты там везде типы заменил? string -> wstring. В векторе, в цикле и т. д.
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
27.09.2016, 15:35  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #15
Спасибо, все заменил.
Насколько я понял, то элементы из вектора теперь просто так не получится использовать в программе? И их придется каким-то образом преобразовывать обратно в обычный string?
nmcf
4270 / 3701 / 1246
Регистрация: 14.04.2014
Сообщений: 14,493
27.09.2016, 15:49     Компилятор выдает ошибку "Could not find a match for 'stringstream" #16
Что ты никак не успокоишься с этим string? wstring точно такой же, только там wchar_t, а не char. Это ничего не меняет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2016, 16:15     Компилятор выдает ошибку "Could not find a match for 'stringstream"
Еще ссылки по теме:

C++ Компилятор выдает ошибку " in function int main ()"
C++ Перечисление символов выдает ошибку "Expected identifier"
C++ Компилятор выдаёт ошибку: error C2011: Confection::Date: переопределение типа "struct". Как исправить?

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

Или воспользуйтесь поиском по форуму:
Коварный
0 / 0 / 0
Регистрация: 18.01.2016
Сообщений: 24
27.09.2016, 16:15  [ТС]     Компилятор выдает ошибку "Could not find a match for 'stringstream" #17
Спасибо! Буду писать программу дальше.
p.s. Вопрос исчерпан
Yandex
Объявления
27.09.2016, 16:15     Компилятор выдает ошибку "Could not find a match for 'stringstream"
Ответ Создать тему

Метки
c++, c++ builder
Опции темы

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