Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
#1

Error: cannot bind 'std::basic_ostream<wchar_t>' lvalue to 'std::basic_ostream<wchar_t>&&'| - C++

20.11.2014, 09:21. Просмотров 1264. Ответов 13
Метки нет (Все метки)

error: cannot bind 'std::basic_ostream<wchar_t>' lvalue to 'std::basic_ostream<wchar_t>&&'|
Ругается на строку
C++
1
 Log<<StripXML(__PRETTY_FUNCTION__)<<std::endl;
. Функция такая:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        std::string                    StripXML                                              (const std::string  &Text            )
{
 std::string Result;
 size_t      i;
 size_t      L;
 Result=Text;
 for (L=Result.length(), i=Result.rfind('&'); i!=std::string::npos; i=Result.substr(0, i-1).rfind('&'))
 {
  Result=Result.substr(0, i)+"&amp;"+Result.substr(i+1, Result.length()-1);
 }
 for (i=Result.find(L, '<'); i!=std::string::npos; i=Result.find('<'))
 {
  Result=Result.substr(0, i)+"&lt;"+Result.substr(i+1, Result.length()-1);
 }
 for (i=Result.find(L, '>'); i!=std::string::npos; i=Result.find('>'))
 {
  Result=Result.substr(0, i)+"&gt;"+Result.substr(i+1, Result.length()-1);
 }
 return Result;
}
. Переменная объявлена так:
C++
1
std::wofstream Log("Log.txt");
.Error: cannot bind 'std::basic_ostream<wchar_t>' lvalue to 'std::basic_ostream<wchar_t>&&'|
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 09:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Error: cannot bind 'std::basic_ostream<wchar_t>' lvalue to 'std::basic_ostream<wchar_t>&&'| (C++):

Error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::
Здравствуйте! Сразу попрошу прощения за тупой вопрос. Почему при перегрузке...

IntelliSense: отсутствует оператор "<<", соответствующий этим операндам типы операндов: std::basic_ostream<char, std::char_traits<char>
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct...

Выделение памяти для буффера, под std::istream& operator>>(std::istream &, String &)
Добрый день. Как осуществляется выделения памяти под перегруженный оператор...

Error C2664: std::vector<_Ty>::push: невозможно преобразовать параметр 1 из 'double' в 'const std::string &'
#include &lt;iostream&gt; #include &lt;stack&gt; #include &lt;sstream&gt; #include &lt;string&gt; ...

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;)
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef...

Ошибка на "cout <<" no match for operator operand types are std::basic_ostream char
Немного слов про код.Данный код создан для выдачи номера машины,цвета,марки при...

13
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
20.11.2014, 09:36  [ТС] #2
Блин, хотел продолжить редактирование, чтоб вытянуть предыдущий пост со всеми тегами.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4372 / 2347 / 654
Регистрация: 18.10.2014
Сообщений: 3,999
20.11.2014, 09:36 #3
Цитата Сообщение от taras atavin Посмотреть сообщение
Ругается на строку
Ей не нравится, что вы пытаетесь выдать обычную строку в широкий поток. Если заменить строку на широкую строку 'std::wstring', то все компилируется нормально.

С обычной строкой оно пытается пробовать всякие "левые" варианты оператора '<<', и останавливается на том, который требует rvalue reference первым аргументом. Поэтому такая ошибка.
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
20.11.2014, 09:39  [ТС] #4
Все string заменил на wstring, теперь
error: invalid initialization of reference of type 'const wstring& {aka const std::basic_string<wchar_t>&}' from expression of type 'const char*'|
. На ту же строку.
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
20.11.2014, 09:40 #5
C++
1
std::ofstream Log("Log.txt");
Так ошибка остаётся?
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
20.11.2014, 09:45  [ТС] #6
При этом
C++
1
Log<<"fds";
в тот же широкий поток проходит.

Добавлено через 4 минуты
Цитата Сообщение от castaway Посмотреть сообщение
Так ошибка остаётся?
Так будут другие ошибки при выводе широких строк.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4372 / 2347 / 654
Регистрация: 18.10.2014
Сообщений: 3,999
20.11.2014, 09:47 #7
Цитата Сообщение от taras atavin Посмотреть сообщение
в тот же широкий поток проходит
Да, стандарт открытым текстом пишет, что такие перегрузки оператора '<<' для 'basic_ostream' имеются. А вот перегрузки для 'basic_string' требуют совпадения типа символа.
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
20.11.2014, 09:50 #8
Цитата Сообщение от taras atavin Посмотреть сообщение
Так будут другие ошибки при выводе широких строк.
Логично.
А есть причины использовать именно "широкие" строки? Просто у тебя в будущем будет меньше проблем если ты будешь использовать обычные.
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
20.11.2014, 10:05  [ТС] #9
Есть.

Добавлено через 16 секунд
Цитата Сообщение от castaway Посмотреть сообщение
Просто у тебя в будущем будет меньше проблем если ты будешь использовать обычные.
Больше. Их вообще будет не разгрести. Называется ад кодировок.
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
20.11.2014, 10:14 #10
Цитата Сообщение от taras atavin Посмотреть сообщение
больше.
У тебя в любом случае будет больше проблем. Ты сам их себе создаёшь.
Как на счет этого сообщения: http://www.cyberforum.ru/cpp-beginners/thread1304857.html#post6873490 ?
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
20.11.2014, 10:16  [ТС] #11
Ну с этим то я уже разобрался. А вот одновременная поддержка анси, кои8, 866 и ещё кучи других кодировок, больше 90 % которых я просто не знаю даже по названиям, - это действительно проблема.
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
20.11.2014, 10:22 #12
Ты пишешь лог всегда в одной кодировке. Зачем тебе UNICODE?
Может я чего не понимаю, объясни.
0
taras atavin
4204 / 1763 / 212
Регистрация: 24.11.2009
Сообщений: 27,565
20.11.2014, 10:33  [ТС] #13
1. Откуда я знаю, какая кодировка будет у пользователя и как из неё преобразовать в эту одну?
2. Дело не только логе. Широкий лог потянулся за выводом в него строчного данного, являющегося частью документа, а оно может быть у одного юзверя в window1251, у другого в windows1253, у третьего в windows1255, а проблема появится, когда четвёртый попытается импортировать их файлы при системной кодировке windows1250 и слепить свою строку из фрагментов импортированных строк. Мне что за каждым символом таскать обозначение кодировки?
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
20.11.2014, 10:55 #14
Когда на вопрос ответишь?
http://www.cyberforum.ru/cpp-beginners/thread1304857.html#post6873490
0
20.11.2014, 10:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 10:55
Привет! Вот еще темы с решениями:

Parse_matrix(std::istream& in); std::istream& in что это значит?
Есть функция которую необходимо описать: std::pair&lt;int, int&gt;...

Std::initializer_list wchar_t
Подскажите, не удаётся сделать функцию добавления в массив wchar_t ...

Std::allocator<wchar_t>>' to 'LPCWSTR'
собственно есть list&lt;wstring&gt; куда вставили много адресов типа L&quot;D:\\66\\99&quot;;...

Std::wostream не выводит wchar_t
Здравствуйте. Есть кусочек кода для записи в файл. Перед ним еще похожий...


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

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

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