[C++] string в С++ еще вопрос ))

stat7819605

#include "stdafx.h"
#include "iostream.h"
#include <string>
int main
{
std::string sHi="hi hi hi";
cout << sHi <<endl;
return 0;
}
Как мне теперь ее вывести на экран?
Ошибка такая:binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
(or there is no acceptable conversion)

evgen5555

#include <string>
...
std::string

Bird_V

1 - У тебя не указан namespace. Решений два:
а) using namespace std; (вставить перед main-ом)
б) писать std::string вместо string
Причём считается, что лучше использовать б)
2 - (10x ) не #include "string.h", а #include <string>

stat7819605

Ага! Понятно спасибо!

stat7819605

#include "stdafx.h"
#include "iostream.h"
#include <string>
int main
{
std::string sHi="hi hi hi";
cout << sHi <<endl;
return 0;
}
Как мне теперь ее вывести на экран?
Ошибка такая:binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
(or there is no acceptable conversion)

okunek

мб std::cout

stat7819605

И еще
printf("%s",sHi);
%s; String; When used with printf functions, specifies a single-byte–character string; when used with wprintf functions, specifies a wide-character string. Characters are printed up to the first null character or until the precision value is reached.
Поидеи должна выводить строку, но при запуске винда ругается на ошибку в программе и закрывает ее )

evgen5555

printf("%s", sHi.c_str;
printf - это C, а std::string - это C++.

stat7819605

Спасибо.
Еще
почему так работает:
#include <iostream>
#include <string>
..........
..........
std::string sHi;
sHi="hi hi hi";
std::cout << sHi;
..........
..........
А вот так не работает:
#include "iostream.h"
#include <string>
..........
..........
std::string sHi;
sHi="hi hi hi";
cout << sHi;
..........
..........

evgen5555

Самое время заглянуть в документацию.

bleyman

ртфм!

bobby

потому что не надо юзать iostream.h =)

Tasha2201

в iostream и iostream.h еще можно
там тоже умное пишут

evgen5555

У iostream и iostream.h нет исходников.

Tasha2201

асеты тупят на ф.локал
ща специально для тебя поправлю

rosali

У iostream и iostream.h нет исходников.
А что же значит include?

freezer

для ostream'а который в <iostream.h>, не определен оператор << с правым операндом std::string, поэтому надо подрубать <iostream> и юзать std::ostream

bleyman

Это не исходники, это кот гот год.
Да, мы с асетом зануды и придираемся к словам =)

rosali

для ostream'а который в <iostream.h>, не определен оператор << с правым операндом std::string
Можно просто написать cout << str.c_str;

deestr

это кот гот год
Что бы это могло значить?
Оставить комментарий
Имя или ник:
Комментарий: