Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с getline(), проблема с _atold(), Темка не горит, но вопрос есть 
V
    Опции темы
Schummi
Дата 20.2.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.2.2008

Репутация: нет
Всего: нет



Использую VS6.0 SP6.
Есть две проблемки первая с getline():
Код

#include <iostream>
#include <string>
using namespace std;

int main()
{
   string s1,s2;

   cout<<"Input 1 string:";
   getline(cin,s1);
   cout<<"Output 1 string:"<<s1<<endl;

   cout<<"Input 2 string:";
   getline(cin,s2); 
   cout<<"Outpit 2 string:"<<s2<<endl;

   return 0;
} 

пример работы проги, ([Enter]              - имеется в виду нажатие клавиши enter):

Input 1 string:abcdef[Enter]                 - тут ввод s1 должен завершитсья(getline c двумя аргументами)
123456[Enter]                                      - однако ввод продолжается - и это явно ошибка компилятора
Output 1 string:abcdef                         -вывели s1 и пока все верно
Input 2 string:ABCDEF[Enter]              -тут ввод s2 завершился, но примерно понятно почему - из-за второго [enter] при первом вводе
Output 2 string:123456                      -выводим s2, но  это не ABCDEF как должно было быть, а "остатки" потока после ввода s1
Press any key to continue    

такое ощущение что ввод опережает нажатие клавиши enter

лазил по сайту искал подобную тему, но ненашел...
если кто знает дайте ссылки - проблема и так ясна, ну или пример кода как этого избежать

в данный момент использую просто третий аргумент для указания символа завершения ввода getline(cin,str,'*') - но это не удобно.


проблемка вторая
просто пример
Код

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    char s[]="123456789.88";
    cout<<_atold(s) ;
    cout<<endl;
    return 0;
}

при попытке компиляции ошибка - :: error C2065: '_atold' : undeclared identifier
типа не видит иденти-ор функции, но  как это исправить. Странно когда пишу код
_atold(  - после открытия скобки компилятор помогает и указвает тип аргумента, то есть
объявление фукнции то видит.
Пробовал подключать <math.h> или <cmath> или <cstdlib> -то же самое...

в принципе надо перевести подготовленный строковый тип к типу double  
            




PM MAIL   Вверх
EnergoHokum
Дата 20.2.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



По поводу первого -- не знаю, у меня на MinGW/GCC отлично всё сработало, а второе -- функции _atold нету, есть _atoldbl из stdlib.h (по крайней мере, она обозначена в MSDN).
PM MAIL ICQ   Вверх
Dronchik
Дата 20.2.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 1
Всего: 37



Schummi, по первому у меня всё работало нормально. Но если хочешь, можешь просто поставить таймер, который задерживал бы на пару милисекунд вывод.


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
Schummi
  Дата 20.2.2008, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.2.2008

Репутация: нет
Всего: нет



to EnergoHokum:

вообщем _atoldbl отсутсвует в stdlib.h - но нашел нашел замену atof(char*) - вроде делает все как надо.
ну а с getline() будем пока работать так как есть .
хотя странно открываю в word stdlib.h
поиском функцию _atold() находит но исопьзовать не получается...
PM MAIL   Вверх
EnergoHokum
Дата 20.2.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



VisualStudio 6 -- довольно старая среда, сейчас многое добавилось, многое изменилось. В заголовках 8-ой VS эта функция есть.
PM MAIL ICQ   Вверх
Dronchik
Дата 20.2.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 1
Всего: 37



EnergoHokum, но по крайне мере она не тормозит и не глючит на каждом шагу, а это свойственно новым средам.
Schummi, 
Цитата(Schummi @  20.2.2008,  12:03 Найти цитируемый пост)
нашел замену atof(char*) - вроде делает все как надо.

эта функция приводит строку к типу float а не double.



--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
Schummi
Дата 20.2.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.2.2008

Репутация: нет
Всего: нет



Цитата(Dronchik @  20.2.2008,  14:29 Найти цитируемый пост)
эта функция приводит строку к типу float а не double.


ну не знаю вот код из stdlib.h - 
_CRTIMP double __cdecl atof(const char *);

Лучше посоветуй на счет первой проблемки -  у меня есть еще один компилятор devc++ - так там все робит ок...

PM MAIL   Вверх
new_web
Дата 20.2.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Странно, в билдере подобной проблемы (первая) не возникает, всё хорошо компилируется, и корректно работает.
Если среда разработки не идёт к програмисту, значит ,надо програмисту идти к среде разработки - а именно - менять! ИМХО*
PM MAIL   Вверх
EnergoHokum
Дата 20.2.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Цитата

но по крайне мере она не тормозит и не глючит на каждом шагу


Переходи на Emacs+MinGW/GCC, работаю, и доволен -- как слон. smile
PM MAIL ICQ   Вверх
Dronchik
Дата 20.2.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 1.5.2007

Репутация: 1
Всего: 37



Schummi, насчёт первой проблемы я уже посаветовал. Если тебе не нравиться как вывод идёт(скорость всмысле), то задерживай его.


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

PM MAIL WWW ICQ   Вверх
Sleepless
Дата 20.2.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 30.1.2008

Репутация: нет
Всего: нет



Schummi, вот решение первой проблемы: The getline template function reads an extra character after encountering the delimiter
PM   Вверх
Schummi
Дата 21.2.2008, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.2.2008

Репутация: нет
Всего: нет



Цитата

Schummi, вот решение первой проблемы: The getline template function reads an extra character after encountering the delimiter 


Думаю, что ссылка от Sleepless и есть самое правильное решение.
Всем огромное спасибо  smile  и респект, тему можно считать закрытой.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1056 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.