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

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

Войти
Регистрация
Восстановить пароль
 
Arcor
 Аватар для Arcor
4782 / 1783 / 155
Регистрация: 20.11.2009
Сообщений: 5,648
Записей в блоге: 1
#1

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

02.03.2012, 16:37. Просмотров 947. Ответов 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 не хочет

в чем может быть такая загвоздка, я не понимаю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Luke
37 / 37 / 1
Регистрация: 21.02.2012
Сообщений: 95
02.03.2012, 16:59     Ошибка при выводе строковой переменной #2
Цитата Сообщение от Arcor Посмотреть сообщение
#include "iostream"
#include "string.h"
поменяй на
C++
1
2
#include <iostream>
#include <string>
и проверь
Arcor
 Аватар для Arcor
4782 / 1783 / 155
Регистрация: 20.11.2009
Сообщений: 5,648
Записей в блоге: 1
02.03.2012, 17:30  [ТС]     Ошибка при выводе строковой переменной #3
результат тот же.. хотя оно по идее ничего не должно было поменять я читал что это эквивалент просто
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 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;
}
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 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 два разных файла. Вы точно исправили и проверили?
Arcor
 Аватар для Arcor
4782 / 1783 / 155
Регистрация: 20.11.2009
Сообщений: 5,648
Записей в блоге: 1
02.03.2012, 19:49  [ТС]     Ошибка при выводе строковой переменной #6
Цитата Сообщение от fasked Посмотреть сообщение
то string и string.h два разных файла
мда... а я голову ломал, написал без расширения и все пошло, говорю же, я не силен вообще в с++
спасибо

а если не эквивалент, то в чем разница тогда?
retmas
Жарю без масла
841 / 723 / 157
Регистрация: 13.01.2012
Сообщений: 1,667
02.03.2012, 20:09     Ошибка при выводе строковой переменной #7
string
cstring (string.h)
Arcor
 Аватар для Arcor
4782 / 1783 / 155
Регистрация: 20.11.2009
Сообщений: 5,648
Записей в блоге: 1
02.03.2012, 20:20  [ТС]     Ошибка при выводе строковой переменной #8
не, я имел ввиду <> и "", что эквивалент, а не с расширением H, там я разницу понял, а в скобках и кавычках есть разница? А что в самом верху написано, на .h не обратил внимания
retmas
Жарю без масла
841 / 723 / 157
Регистрация: 13.01.2012
Сообщений: 1,667
02.03.2012, 20:22     Ошибка при выводе строковой переменной #9
<> - из стандартных инклудов
"" - из пользовательских
Avazart
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,906
Записей в блоге: 17
02.03.2012, 20:41     Ошибка при выводе строковой переменной #10
<> и " " указывают на то где данный файл будет искаться
Arcor
 Аватар для Arcor
4782 / 1783 / 155
Регистрация: 20.11.2009
Сообщений: 5,648
Записей в блоге: 1
03.03.2012, 02:47  [ТС]     Ошибка при выводе строковой переменной #11
так, ладно разобрались, вот тогда волнует еще вопрос, почему тогда string.h работает в других компиляторах так же как и string в данной ситуации, это MinGW например, или компилятор 2008 студии?
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
03.03.2012, 07:18     Ошибка при выводе строковой переменной #12
<string.h> - это сишная библиотека для работы со строками, в новом стандарте ей соостветствует заголовочный файл <cstring>. <string> - библиотека C++, описывающая класс string.
А в других компиляторах string может через цепочку заголовочных файлов быть виден из iostream, потому и работает.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.03.2012, 07:52     Ошибка при выводе строковой переменной #13
Цитата Сообщение от kazak Посмотреть сообщение
в новом стандарте
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
03.03.2012, 10:53     Ошибка при выводе строковой переменной #14
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.

Добавлено через 1 секунду
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ну вроде их давно переименовали для C++ а в C вроде так и пишется с .h
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.
Raptor75
3 / 3 / 1
Регистрация: 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?
Arcor
 Аватар для Arcor
4782 / 1783 / 155
Регистрация: 20.11.2009
Сообщений: 5,648
Записей в блоге: 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?
я же писал, интересует именно переменная

вопрос наверно решен для меня, всем спасибо за участие !
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.03.2012, 19:28     Ошибка при выводе строковой переменной #17
Цитата Сообщение от fasked Посмотреть сообщение
Компилятор C++ должен компилировать (почти всегда) код, написанный на Си. К тому же и в C++ не всегда так было.
Ну так я и написал, наверно просто не полно, что в с++ раньше тоже использовали .h, но переименовали вроде в первом стандарте, могу ошибаться, но точно относительно давно. А то что должен компилировать, так это сохранили из соображений совместимости с С вроде.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2012, 22:51     Ошибка при выводе строковой переменной
Еще ссылки по теме:

Ошибка при выводе строки C++
Неожиданный результат при выводе значения переменной, несмотря на инкремент C++
Ошибка при выводе дерева C++
C++ Ошибка при выводе символов
При выводе на экран переменной string выводится набор левых символов C++

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3584 / 1364 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
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'
Yandex
Объявления
06.03.2012, 22:51     Ошибка при выводе строковой переменной
Ответ Создать тему
Опции темы

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