Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Arcor
5141 / 2000 / 430
Регистрация: 20.11.2009
Сообщений: 6,650
Записей в блоге: 1
1

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

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

Привет всем, сразу скажу, что в с++ я не очень. Но нужно начинать уже сейчас в нем разбираться, а то скоро начнется он у меня в универе. Проблема именно вот в чем, нужно использовать 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
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;...

Задача со строковой переменной
помогите кто может...вот задание &quot;Создать программу, анализирующую правильность записи...

17
Luke
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
Arcor
5141 / 2000 / 430
Регистрация: 20.11.2009
Сообщений: 6,650
Записей в блоге: 1
02.03.2012, 17:30  [ТС] 3
результат тот же.. хотя оно по идее ничего не должно было поменять я читал что это эквивалент просто
0
R136a1
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
02.03.2012, 17:37
fasked
Эксперт С++
5007 / 2586 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
Arcor
5141 / 2000 / 430
Регистрация: 20.11.2009
Сообщений: 6,650
Записей в блоге: 1
02.03.2012, 19:49  [ТС] 6
Цитата Сообщение от fasked Посмотреть сообщение
то string и string.h два разных файла
мда... а я голову ломал, написал без расширения и все пошло, говорю же, я не силен вообще в с++
спасибо

а если не эквивалент, то в чем разница тогда?
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
02.03.2012, 20:09 7
string
cstring (string.h)
1
Arcor
5141 / 2000 / 430
Регистрация: 20.11.2009
Сообщений: 6,650
Записей в блоге: 1
02.03.2012, 20:20  [ТС] 8
не, я имел ввиду <> и "", что эквивалент, а не с расширением H, там я разницу понял, а в скобках и кавычках есть разница? А что в самом верху написано, на .h не обратил внимания
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
02.03.2012, 20:22 9
<> - из стандартных инклудов
"" - из пользовательских
1
Avazart
Эксперт С++
7974 / 5796 / 571
Регистрация: 10.12.2010
Сообщений: 26,663
Записей в блоге: 18
02.03.2012, 20:41 10
<> и " " указывают на то где данный файл будет искаться
0
Arcor
5141 / 2000 / 430
Регистрация: 20.11.2009
Сообщений: 6,650
Записей в блоге: 1
03.03.2012, 02:47  [ТС] 11
так, ладно разобрались, вот тогда волнует еще вопрос, почему тогда string.h работает в других компиляторах так же как и string в данной ситуации, это MinGW например, или компилятор 2008 студии?
0
kazak
3065 / 2386 / 255
Регистрация: 11.03.2009
Сообщений: 5,444
Завершенные тесты: 1
03.03.2012, 07:18 12
<string.h> - это сишная библиотека для работы со строками, в новом стандарте ей соостветствует заголовочный файл <cstring>. <string> - библиотека C++, описывающая класс string.
А в других компиляторах string может через цепочку заголовочных файлов быть виден из iostream, потому и работает.
0
Toshkarik
1168 / 881 / 94
Регистрация: 03.08.2011
Сообщений: 2,450
Завершенные тесты: 1
03.03.2012, 07:52 13
Цитата Сообщение от kazak Посмотреть сообщение
в новом стандарте
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
0
fasked
Эксперт С++
5007 / 2586 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.03.2012, 10:53 14
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.

Добавлено через 1 секунду
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.
0
Raptor75
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
Arcor
5141 / 2000 / 430
Регистрация: 20.11.2009
Сообщений: 6,650
Записей в блоге: 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
Toshkarik
1168 / 881 / 94
Регистрация: 03.08.2011
Сообщений: 2,450
Завершенные тесты: 1
03.03.2012, 19:28 17
Цитата Сообщение от fasked Посмотреть сообщение
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.
Ну так я и написал, наверно просто не полно, что в с++ раньше тоже использовали .h, но переименовали вроде в первом стандарте, могу ошибаться, но точно относительно давно. А то что должен компилировать, так это сохранили из соображений совместимости с С вроде.
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2012, 22:51

Запись строковой переменной в файл
String z ; z= Edit5-&gt;Text.c_str(); FILE * ptrFile = fopen(&quot;1.txt&quot;, &quot;r&quot;); if...

Ошибка при выводе
Не могу найти ошибку в цикле. Суть такая: &quot;вывести на дисплей фамилии и номера групп для всех...

Как найти слово в строковой переменной?
string q; cin &gt;&gt; q; if (q == 'Привет друг!') { cout &lt;&lt; &quot;Привет !&quot;; } как правильно...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

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