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

Программа выводит только первую строку текста - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Sezz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 26
31.05.2012, 12:19     Программа выводит только первую строку текста #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// yourcat.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(void)
{
    int fleas;
    cout<<"how many fleas does yourcat have\n";
    cin>>fleas;
    cout<<"well,that's"<<fleas<<"fleas doo many!\n";
    cin.get();
    return 0;
}
Вот код программы должно выдасть
how many fleas does yourcat have
112
well,that's 112 fleas doo many!
А выдает только первую строку
how many fleas does yourcat have
IDE
Visual Studio 2008 express.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 12:19     Программа выводит только первую строку текста
Посмотрите здесь:

C++ Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку.
C++ Функция fopen() для большого текстового файла читает только первую строку
C++ Списки. Не выводит первую вводимую строку
C++ Программа считывает строку текста, выводит число слов и количество вхождений каждой буквы
C++ Программа выводит только одно значение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 15:02     Программа выводит только первую строку текста #41
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Toshkarik, вектор подключи, файл мы тоже не считаем без fstream. Вектор - отдельный класс, манипуляторы тоже, понятное дело без объявления класса никуда, другое дело файлы с наборами функций. Мы можем использовать strcpy сразу а вот std::string только подключив string. Ещё раз обращаю внимание на момент - файлы с дефайном _STD_USING подключаются сами. Файлы же с _STD_BEGIN обязательны с подключению в хедерах!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// vector standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _VECTOR_
#define _VECTOR_
#include <climits>
#include <memory>
#include <stdexcept>
#include <xutility>
 
#ifdef  _MSC_VER
#pragma pack(push,8)
#endif  /* _MSC_VER */
_STD_BEGIN
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// string standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _STRING_
#define _STRING_
#include <istream>
 
#ifdef  _MSC_VER
#pragma pack(push,8)
#endif  /* _MSC_VER */
_STD_BEGIN
Чтобы было понятно strcpy из string.h нам доступно сразу так как в cstring идёт USING, а вот класс std::string его надо подключать именно string в котором идёт BEGIN. Кто не верит берёт и проверяет вручную дефайны!

Добавлено через 4 минуты
Чуть не забыл об STDLIB
C++
1
2
3
4
5
6
7
8
9
10
11
// cstdlib standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTDLIB_
#define _CSTDLIB_
#ifdef _STD_USING
 #undef _STD_USING
 #include <stdlib.h>
#define _STD_USING
C++
1
2
3
4
#else
 #include <stdlib.h>
#endif /* _STD_USING */
#endif /* _CSTDLIB */
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 15:18     Программа выводит только первую строку текста #42
Теперь уже подключить что то нужно, пару страниц назад Вы совершенно другое говорили. И данная реализация MS компилятора никакого отношения к стандарту не имеет, о чем Вы так же говорили пару страниц назад.
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 15:31     Программа выводит только первую строку текста #43
Toshkarik, я не ведущий системный разработчик у мелкософта. Ясно и чётко написал что функции stdlib идут сразу потому как в нём
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
_STD_USING
об этом и говорит также возможность использовать system не подключая stdlib остальное нужно смотреть - где нет _STD_BEGIN то подключиться без нашего участия, где есть и хотим использовать в программе, надо делать инклуд. И пару страниц назад я писал лишь одно для system в VS подключать stdlib нет необходимости!Всё остальное уже было сказано выше.

Добавлено через 6 минут

Не по теме:

Разговор с ТС вконтакте - подтвердил слова diagon : в программе не соуществлялся ввод числа

Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 15:32     Программа выводит только первую строку текста #44
А теперь, пожалуйста, посмотрите мое сообщение о непереносимости данного кода и Ваш ответ на него.
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 15:56     Программа выводит только первую строку текста #45
Toshkarik, ну и посмотри мой ответ на него. Да любую функцию СТД простарнства, если мы говорим о std::string vector то мы имеем методы данного конктретного класса(функции присущие именно данному классу), их да надо объявлять в коде посредством инклуда. Возьмём скажем strcpy (а чем блин не любая функция СТД пространства) то она доступна сразу, даже сам по себе string str; тоже можно записать без #include <string>, а вот методы std::string надо подключать. Ну и что я написал не так?Повторюсь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
об этом и говорит также возможность использовать system не подключая stdlib остальное нужно смотреть - где нет _STD_BEGIN а есть _STD_USING то подключиться без нашего участия, где есть и хотим использовать в программе, надо делать инклуд. И пару страниц назад я писал лишь одно для system в VS подключать stdlib нет необходимости!
Добавлено через 14 минут
Toshkarik, ещё раз вернусь к нашему спору:
Итак strcpy объявлена где,ммм?Правильно в string.h исходя из твоей логики чтобы эта функция была доступна и как ты говоришь код свободно переносимым был, то после iostream мы должны написать cstring ну так ведь?
Ладно VS по твоему вне стандарта, тогда значит кодпад который реалзует твой GCC компилятор врёт http://codepad.org/a7gvFvGj
Хммм, а может всё таки дело в дефайнах о которых я говорил выше
Посмотри на досуге cstring
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// cstring standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTRING_
#define _CSTRING_
#ifdef _STD_USING
 #undef _STD_USING
 #include <string.h>
 #define _STD_USING
#else
 #include <string.h>
#endif /* [COLOR="Red"][B]_STD_USING[/B][/COLOR] */
#endif /* _CSTRING_ */
Выделенное красным хорошо видно?Ну вот также и с stdlib!
Ну давай опровергни свои же слова
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 15:57     Программа выводит только первую строку текста #46
Вы совершенно другую мысль излагали в том посте, нежели сейчас, после нескольких страниц обсуждения.
Если честно уже поднадоело, особенно после вновь увиденной фразы о Code::Block`s. Пускай каждый останется при своем мнении.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
31.05.2012, 15:59     Программа выводит только первую строку текста #47
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
.....
A C++ library header includes any other C++ library headers it needs to define needed types. (Always include explicitly any C++ library headers needed in a translation unit, however, lest you guess wrong about its actual dependencies.)
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 16:00     Программа выводит только первую строку текста #48
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Ну давай опровергни свои же слова
Какие именно? Я свое мнение написал чуть выше. По поводу GCC я обязательно сегодня же покапаюсь и узнаю.
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 16:03     Программа выводит только первую строку текста #49
Toshkarik, просто ты увидел что сел в лужу и даёшь по тормозам. Я как раз сейчас самую суть выссказал - по твоей логике для strcpy надо включать cstring тогда почему без него всё работает и в студии и нестудии?
rangerx, напиши перевод, интересно как интерпритируешь текст
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 16:07     Программа выводит только первую строку текста #50
Да в какую лужу? Где и в чем я не прав? Укажите цитатами и ссылками на сообщения? А вот по Вашей логике, как раз в том первом сообщении, ВСЕ функции и объекты из std автоматически подключаются при using namespace std;. И никак по другому невозможно интерпретировать данное сообщение, я же возразил, представив пример с вектором и манипуляторами. Вы же начали сами уже высасывать из пальца, и перефразировать свои утверждения.
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 16:11     Программа выводит только первую строку текста #51
Цитата Сообщение от Toshkarik Посмотреть сообщение
Какие именно?
- твои слова для system нужен cstdlib аналогично для strcpy нужен cstring ну я как бы показал что с глобальным std функции из данных библиотек доступны без явного указания хедеров(они будут подключены через дефайн _STD_USING а не через include)

Добавлено через 4 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
я же возразил, представив пример с вектором и манипуляторами.
- тебе также ясно показал что идут хедеры с _STD_USING и _STD_BEGIN (последние требуют явного подключения).Хватит прикидываться шлангом пиши конкретно сам где я отступил от своих слов. Ты от своих если не оступил, то думаю пример strcpy для человека отсранённо читающего данную тему будет говорить о том чьи же слова оказались истинными
Можешь не отвечать, т.к. кроме мышиной возни я врядли что то увижу...
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 16:11     Программа выводит только первую строку текста #52
Вы понимаете что они не обязаны так работать? Что это всего лишь совпадение и что это не функционал языка?
-=ЮрА=-
31.05.2012, 16:13
  #53

Не по теме:

Цитата Сообщение от Toshkarik Посмотреть сообщение
Вы понимаете что они не обязаны так работать? Что это всего лишь совпадение и что это не функционал языка?
- ну конечно конечно...
То что код без явного указания хедера идёт на GCC это так нчего не значит, тоже отклонение от стандарта

Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 16:15     Программа выводит только первую строку текста #54
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ебе также ясно показал что идут хедеры с _STD_USING и _STD_BEGIN
Где? В этом сообщении я не вижу ничего подобного:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- Ты о чём вообще? Код будет переносим для того что хоть немного следует стандарту http://codepad.org/0PE91DLt если в кодблоксе разработчики не довели СТД это не значит что СТДЛИБ не должно в данном пространстве быть (тебя не смущает using namespace STD и доп подключение STDlib - это глупость. Всё что идёт с приставкой СТД должно быть подавно включено в пространство)

Добавлено через 1 минуту
Sezz, сейчас выложу проект попробуешь его откомпилировать, если не выйдет значит у тебя кривая студия - других вариантов не вижу
А вижу фразу:
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Всё что идёт с приставкой СТД должно быть подавно включено в пространство
Где и что там о Вашем _STD_USING и _STD_BEGIN? Опять же, они существуют только в MS заголовке.

Добавлено через 1 минуту
-=ЮрА=-, Да ради бога, думайте что хотите, я от своих слов не отказываюсь, и Вы меня не переубедили, я бы даже сказал наоборот.
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 16:24     Программа выводит только первую строку текста #55
Цитата Сообщение от Toshkarik Посмотреть сообщение
А вижу фразу:
Сообщение от -=ЮрА=-
Всё что идёт с приставкой СТД должно быть подавно включено в пространство
Где и что там о Вашем _STD_USING и _STD_BEGIN? Опять же, они существуют только в MS заголовке.
stdef
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// cstddef standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTDDEF_
#define _CSTDDEF_
#ifdef _STD_USING
 #undef _STD_USING
 #include <stddef.h>
 #define _STD_USING
#else
 #include <stddef.h>
#endif /* [COLOR="Red"]_STD_USING[/COLOR] */
#endif /* _CSTDDEF_ */
STDARG
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// cstdarg standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTDARG_
#define _CSTDARG_
#ifdef _STD_USING
 #undef _STD_USING
 #include <stdarg.h>
 #define _STD_USING
#else
 #include <stdarg.h>
#endif /* [COLOR="red"]_STD_USING[/COLOR] */
#endif /* _CSTDARG_ */
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// cstdlib standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTDLIB_
#define _CSTDLIB_
#ifdef _STD_USING
 #undef _STD_USING
 #include <stdlib.h>
 #define _STD_USING
#else
 #include <stdlib.h>
#endif /* [COLOR="red"]_STD_USING[/COLOR] */
#endif /* _CSTDLIB */
Оу май гад
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// cstdio standard header
 
#if     _MSC_VER > 1000
#pragma once
#endif
 
#ifndef _CSTDIO_
#define _CSTDIO_
#ifdef _STD_USING
 #undef _STD_USING
 #include <stdio.h>
 #define _STD_USING
#else
 #include <stdio.h>
#endif /* [COLOR="red"]_STD_USING[/COLOR] */
#endif /* _CSTDIO_ */
Ещё фразы будут?

Добавлено через 1 минуту

Не по теме:

Toshkarik, заметь string vector не имеют приставок STD
Павлины говоришь....



Добавлено через 1 минуту
А теперь ответь за свои слова - пиши о system и strcpy почему они работают, ммм?Жду
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 16:28     Программа выводит только первую строку текста #56
Вы видать совсем ничего не поняли, в Вашем сообщении фраза
Всё что идёт с приставкой СТД должно быть подавно включено в пространство
особенно словосочетание
с приставкой СТД
как std::что-то. А не как какой то там _STD_USING и так далее, который опять повторюсь, существует только в MS-компиляторе.

Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
пиши о system и strcpy почему они работают, ммм
Да только потому, что заголовки с этими функциями используются в iostream или во вложенных в него.
-=ЮрА=-
31.05.2012, 16:32
  #57

Не по теме:


Цитата Сообщение от Toshkarik Посмотреть сообщение
уществует только в MS-компиляторе.
- Тогда какого чёрта по твоему strcpy работает без string (если есть iostrem и using namespace std)?!!!Просто так наверное...
А ладно, мне уже не интересно продолжать дискуссию и так топик загадили

Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.05.2012, 16:42     Программа выводит только первую строку текста #58
По Вашему рассуждению, должен работать такой код:
C++
1
2
3
4
5
6
7
8
9
#include <cstring>
 
using namespace std;
 
int main() {
    system( "pause" );
 
    return 0;
}
Но это не так.

Добавлено через 3 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Тогда какого чёрта по твоему strcpy работает без string (если есть iostrem и using namespace std)?
Да потому что где то в iostream включен заголовок string.h или cstring! Вы попробуйте использовать ее подключив вместо iostream cstdlib например:
C++
1
2
3
4
5
6
7
8
9
10
#include <cstdlib>
 
using namespace std;
 
int main() {
    char str1[] = "2333", str2[] = "2343";
    strcpy( str1, str2 );
 
    return 0;
}
Этот код так же не рабочий.

Добавлено через 4 минуты
Нашел в иерархии вложений iostream вложение cstring в заголовке xlocale.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
31.05.2012, 16:55     Программа выводит только первую строку текста #59
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
rangerx, напиши перевод, интересно как интерпритируешь текст
"Заголовочный файл стандартной библиотеки C++ может включать в себя любые другие заголовки стандартной библиотеки требующиеся для определения необходимых типов. (Тем не менее, всегда явно подключайте любой стандартный заголовок стандартной библиотеки C++, который необходим в данной единице трансляции, чтобы не прогадать с их актуальными зависимостями.)"
А к чему все эти макросы VS, которые ты привёл я честно говоря так и не понял...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 17:56     Программа выводит только первую строку текста
Еще ссылки по теме:

Программа, которая считывает текст из файла, и выводит на экран только цитаты C++
Программа выводит только 1 знак после запятой, хотя должна выводить больше C++
Ifstream считывает только первую строку C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 17:56     Программа выводит только первую строку текста #60

Не по теме:

Цитата Сообщение от Toshkarik Посмотреть сообщение
Да потому что где то в iostream включен заголовок string.h или cstring!
- его там нет



Добавлено через 1 минуту
Цитата Сообщение от rangerx Посмотреть сообщение
"Заголовочный файл стандартной библиотеки C++ может включать в себя любые другие заголовки стандартной библиотеки требующиеся для определения необходимых типов. (Тем не менее, всегда явно подключайте любой стандартный заголовок стандартной библиотеки C++, который необходим в данной единице трансляции, чтобы не прогадать с их актуальными зависимостями.)"
- ещё раз в истриме нет этих хедеров они подключаются компиляторм по отличному от инклудов механизму

Цитата Сообщение от Toshkarik Посмотреть сообщение
По Вашему рассуждению, должен работать такой код:

C++
1
2
3
4
5
6
#include <cstring>
using namespace std;
int main() {
* * system( "pause" );
return 0;
}
Но это не так.
- как это не так если он работает?!!!!

Добавлено через 35 секунд
Я писал о студии. И тема вообще студии посвящена, какого чёрта вы тут подняли тему жсс мне не понятно, лишь бы похоливорить.
Yandex
Объявления
31.05.2012, 17:56     Программа выводит только первую строку текста
Ответ Создать тему
Опции темы

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