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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 432
#1

istream - C++

31.07.2013, 13:39. Просмотров 2198. Ответов 10
Метки нет (Все метки)

В 12 стоке ошибка no matching function for call to `std::basic_istream<char, std::char_traits<char> >::basic_istream(char*&, size_t)'
В книге Страуструпа говорится, что нужно включить <strstream.h>, но мой компилятор его не находит, в интернете советуют включать sstream, что я и сделал. В книге точно так же, только нет std::. Я так понял, вызывается функция неправильно?
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
28
#include <cstdlib>
#include <sstream>
#include <iostream>
#include "data.h"
 
int main(int argc, char *argv[])
{
    switch (argc) {
        case 1:
            break;
        case 2:
            std::cin = *new std::istream(argv[1],strlen(argv[1]));
            break;
        default:
            error ("too many parametrs");
            return 1;
    }
    insert("pi")->value = 3.1415926535897932385;
    insert ("e")->value = 2.7182818284590452354;
    while (std::cin) {
        get_token ();
        if (curr_tok == END) break;
        if (curr_tok == PRINT) continue;
        std::cout << expr () << '\n';
    }
    system("PAUSE");
    return no_of_errors;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 13:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос istream (C++):

Разница между istream::putback и istream::unget - C++
Можете объяснить, пожалуйста, разницу этих двух функций?

Выделение памяти для буффера, под std::istream& operator>>(std::istream &, String &) - C++
Добрый день. Как осуществляется выделения памяти под перегруженный оператор ввода данных в пользовательский тип? Ведь мы заранее не можем...

Почему istream::get() ? - C++
Здравствуйте. Почему перед istream::getline, необходимо делать get(), если перед этим было cin &gt;&gt; char_array (filein &gt;&gt; char_array)? А...

istream, ostream - C++
Есть задача по сохранению в файл и восстановлении из файла объекта. Функции надо сделать такие: void Serialize(std::ostream &amp; stream); //...

Перегрузка ofstream, istream - C++
В общем-то ошибка в описана в самом коде //main.cpp #include &quot;ui.cpp&quot; int main() { ui iu; iu.menu(); iu.casein(); ...

istream и конец строки - C++
Решая задачу, столкнулся с проблемой - не знаю, как записать следующее: &quot;пока не конец строки, читаем слово&quot;. То есть: string s; while...

10
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
31.07.2013, 14:59 #2
Цитата Сообщение от tramp_1-3 Посмотреть сообщение
C++
1
std::cin = *new std::istream(argv[1],strlen(argv[1]));
Чего Вы хотите этим добиться?
0
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 432
31.07.2013, 15:11  [ТС] #3
Цитата Сообщение от Tulosba Посмотреть сообщение
Чего Вы хотите этим добиться?
"можно определить cin
так, чтобы символы читались из строки, а не из стандартного входного потока"
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
31.07.2013, 15:23 #4
Цитата Сообщение от tramp_1-3 Посмотреть сообщение
"можно определить cin
так, чтобы символы читались из строки, а не из стандартного входного потока"
Что, прямо так и написано у Страуструпа?
Хотите читать из как бы из std::cin, но на самом деле из строки, используйте rdbuf():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <sstream>
#include <string>
 
int main() {
    
    std::stringstream ss("hello");
    std::cin.rdbuf( ss.rdbuf() );
    std::string s;
    std::cin >> s;
    std::cout << s << endl;
    
    return 0;
}
1
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 432
31.07.2013, 15:37  [ТС] #5
Tulosba, посмотрю
0
Миниатюры
istream  
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
31.07.2013, 15:44 #6
tramp_1-3, какое это издание? У std::istream нет конструктора с двумя параметрами
1
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 432
31.07.2013, 15:56  [ТС] #7
Цитата Сообщение от Tulosba Посмотреть сообщение
какое это издание?
Бьерн Страуструп.
Язык программирования С++
Второе дополненное издание
Языки программирования/ С++
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.07.2013, 15:59 #8
tramp_1-3, Второе издание... Вы ничего старее не смогли найти?
Год издания: 1997, книге уже 16 лет так-то.
И кстати да, strstream != stringstream. Совершенно.
1
Tulosba
31.07.2013, 16:02
  #9

Не по теме:

Цитата Сообщение от ForEveR Посмотреть сообщение
Год издания: 1997, книге уже 16 лет так-то.
Чем старее, тем знания ценнее Проверено годами, так сказать.

0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
31.07.2013, 16:05 #10
Как бы то ни было. Там просто опечатка.
C++
1
cin = *new istream(argv[1],strlen(argv[1]));
А дальше идет
При этом istrstream - это функция istream, которая считывает
символы из строки, являющейся ее первым параметром.
Соотстветнно должно быть
C++
1
cin = *new istrstream(argv[1], strlen(argv[1]));
, который действительно имеет такой конструктор, однако strstream является deprecated и вполне может не присутсвовать в конкретной реализации STL. Соответственно, достаньте себе третье-четвертое издание.
2
tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 432
31.07.2013, 16:38  [ТС] #11
Цитата Сообщение от ForEveR Посмотреть сообщение
, который действительно имеет такой конструктор, однако strstream является deprecated и вполне может не присутсвовать в конкретной реализации STL. Соответственно, достаньте себе третье-четвертое издание.
Этой функции там не оказалось. Спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 16:38
Привет! Вот еще темы с ответами:

istream состояние bad - C++
Всем привет! Как можно вызвать состояние bad у потока istream? (т.е. не так, что &quot;состояние bad может быть вызвано серьезной ошибкой...

std::istream часть кода - C++
std::istream &amp;read (std::istream &amp;in, Student_Data &amp;S_D) { cout&lt;&lt;&quot;Enter you name: &quot;; in&gt;&gt;S_D.name; ...

Объект cin и класс istream - C++
В учебнике приводиться такое задание: &quot;Напишите функцию, получающую и возвращающую ссылку на объект класса istream. Фукнция должна читать...

istream - считывание определённой строки - C++
Всем привет. Помогите плз. Например у меня есть текстовый файл, в котором написанно: Many Big Pig Best Sick как в string,...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
31.07.2013, 16:38
Ответ Создать тему
Опции темы

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