Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
1

Ошибка при выводе строковой переменной

02.03.2012, 16:37. Показов 3084. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем, сразу скажу, что в с++ я не очень. Но нужно начинать уже сейчас в нем разбираться, а то скоро начнется он у меня в универе. Проблема именно вот в чем, нужно использовать MS Visual C++ 2010 Express версию, и не какую другую, а в ней какой-то баг, или я не знаю как это назвать, при выводе строковых переменных, указывает на ошибку вывода, что не могу я обработать такую операцию, вот код, если можно это так назвать
C++
1
2
3
4
5
6
7
8
9
10
11
#include "iostream"
#include "string.h"
using namespace std;
 
void main()
{   
    string s;
    s = "Hello world";
    cout << s << endl; // вот в этом месте проблема.. подчеркивает первые << 
    system("pause");
}
и говорит мне компилятор на эти << "отсутствует оператор соответствующий этим операндам"

пробовал в других компиляторах откомпилировать, все отлично, даже в версии 2008 тоже нормально компилирует, а в 2010 не хочет

в чем может быть такая загвоздка, я не понимаю
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2012, 16:37
Ответы с готовыми решениями:

Почему при выводе значения переменной выводиться inf?
При выводе z выводится inf #include &lt;iostream&gt; void main() { double n, b, x, y, z; n =...

Возможно ли присвоить переменной типа string префикс 'L' при выводе
Возможно ли присвоить переменной типа string префикс 'L' при выводе? Если да, то как. Проблема в...

Неожиданный результат при выводе значения переменной, несмотря на инкремент
подскажите почему значения a и с начинаются с 1 а не с 2 стоит же &quot;++&quot; int a = 1; void f() {...

При выводе на экран переменной string выводится набор левых символов
int main() { int s; string b; printf(&quot;DEC: &quot;); scanf(&quot;%i&quot;, &amp;s); for (int i = 31; i &gt;= 0;...

17
40 / 40 / 7
Регистрация: 21.02.2012
Сообщений: 95
02.03.2012, 16:59 2
Цитата Сообщение от Arcor Посмотреть сообщение
#include "iostream"
#include "string.h"
поменяй на
C++
1
2
#include <iostream>
#include <string>
и проверь
1
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
02.03.2012, 17:30  [ТС] 3
результат тот же.. хотя оно по идее ничего не должно было поменять я читал что это эквивалент просто
0
143 / 112 / 36
Регистрация: 14.04.2011
Сообщений: 261
02.03.2012, 17:37 4
Цитата Сообщение от Arcor Посмотреть сообщение
#include "string.h"
не эквивалентно

Цитата Сообщение от Luke Посмотреть сообщение
#include <string>
попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
 
int main()
{       
        std::string s;
        s = "Hello world";
        std::cout << s << std::endl;
 
        return 0;
}
1
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
02.03.2012, 17:38 5
Цитата Сообщение от Arcor Посмотреть сообщение
хотя оно по идее ничего не должно было поменять я читал что это эквивалент просто
C++
1
2
#include <iostream>
#include <string>
C++
1
2
#include "iostream"
#include "string.h"
Это не эквиваленты. Если случай с iostream еще можно подвести под равнозначный, то string и string.h два разных файла. Вы точно исправили и проверили?
1
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
02.03.2012, 19:49  [ТС] 6
Цитата Сообщение от fasked Посмотреть сообщение
то string и string.h два разных файла
мда... а я голову ломал, написал без расширения и все пошло, говорю же, я не силен вообще в с++
спасибо

а если не эквивалент, то в чем разница тогда?
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
02.03.2012, 20:09 7
string
cstring (string.h)
1
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
02.03.2012, 20:20  [ТС] 8
не, я имел ввиду <> и "", что эквивалент, а не с расширением H, там я разницу понял, а в скобках и кавычках есть разница? А что в самом верху написано, на .h не обратил внимания
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
02.03.2012, 20:22 9
<> - из стандартных инклудов
"" - из пользовательских
1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.03.2012, 20:41 10
<> и " " указывают на то где данный файл будет искаться
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
03.03.2012, 02:47  [ТС] 11
так, ладно разобрались, вот тогда волнует еще вопрос, почему тогда string.h работает в других компиляторах так же как и string в данной ситуации, это MinGW например, или компилятор 2008 студии?
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
03.03.2012, 07:18 12
<string.h> - это сишная библиотека для работы со строками, в новом стандарте ей соостветствует заголовочный файл <cstring>. <string> - библиотека C++, описывающая класс string.
А в других компиляторах string может через цепочку заголовочных файлов быть виден из iostream, потому и работает.
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
03.03.2012, 07:52 13
Цитата Сообщение от kazak Посмотреть сообщение
в новом стандарте
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
03.03.2012, 10:53 14
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.

Добавлено через 1 секунду
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.
0
3 / 3 / 0
Регистрация: 01.03.2012
Сообщений: 29
03.03.2012, 10:58 15
Если я правильно понял тебе нужно вывести текст на экран?

C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include<iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"Hello world!\n";
system("pause");
 
    return 0;
}
В MVS 2010 Express примерно так выглядит.
Или необходимо использовать именно string?
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
03.03.2012, 18:07  [ТС] 16
Цитата Сообщение от Raptor75 Посмотреть сообщение
Если я правильно понял тебе нужно вывести текст на экран?

C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include<iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"Hello world!\n";
system("pause");
 
    return 0;
}
В MVS 2010 Express примерно так выглядит.
Или необходимо использовать именно string?
я же писал, интересует именно переменная

вопрос наверно решен для меня, всем спасибо за участие !
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
03.03.2012, 19:28 17
Цитата Сообщение от fasked Посмотреть сообщение
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.
Ну так я и написал, наверно просто не полно, что в с++ раньше тоже использовали .h, но переименовали вроде в первом стандарте, могу ошибаться, но точно относительно давно. А то что должен компилировать, так это сохранили из соображений совместимости с С вроде.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
06.03.2012, 22:51 18
Цитата Сообщение от Arcor Посмотреть сообщение
пробовал в других компиляторах откомпилировать, все отлично,
При не подключенной
C++
1
#include <string>
И этом чуде?
Цитата Сообщение от Arcor Посмотреть сообщение
void main()
Классные компиляторы, больше ими не пользуйтесь
нормальный компилятор, скажет:
Код
Compilation finished with errors:
source.cpp:5:11: error: '::main' must return 'int'
0
06.03.2012, 22:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2012, 22:51
Помогаю со студенческими работами здесь

Ошибка при выводе символьной переменной
Подскажите почему программа выводит не символ а его код, и как это исправить: char F; F='A';...

Некорректный вывод при работе со строковой переменной
Проблема с выводом string, содержащей перевод строки. Первое выдает пустое окно, второе выдает все...

Использовать значение строковой переменной как имя новой переменной
Есть некий объект (ob = ) и строка (st =&quot;name&quot;). Так вот нужно, чтобы name стало именем объекта ob....

Как получить/установить значение переменной по названию (название берется из строковой переменной)
собственно сабж


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru