Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Holsteng
47 / 10 / 2
Регистрация: 26.03.2012
Сообщений: 246
1

Конвертирование в wstring&

30.08.2012, 15:14. Просмотров 744. Ответов 10
Метки нет (Все метки)

Всем привет! Не могу понять почему невозможно конвертировать из wchar_t в wstring&
Вызов метода
C++
1
client -> CompareTwoString( iteratorclient -> nameclient, positionclient ,lenghtname );
функция

C++
1
2
3
4
bool CompareTwoString( wstring &one, wstring &two, int position )
{
    //something
}
C++
1
 'Clients::CompareTwoString' : cannot convert parameter 1 from 'wchar_t [30]' to 'std::wstring &'
Заранее спасибо!

И подскажите , когда в строке присутствует /0 и когда его надо добавлять. Когда мы создаем строку

C++
1
char str [] = "abc";
третим элементом будет /0 (компилятор добавляет), а когда мы создаем вот так

C++
1
string str = "abc";
Будет ли /0?.

Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2012, 15:14
Ответы с готовыми решениями:

Объясните, что означает wstring input = L""; и wstring output = L""; ?
Непонятно особенно L"".

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

Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
Пытаюсь скомпилировать программу пишет friend ostrem&amp; operator &lt;&lt;(ostream&amp;...

В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9&
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка?
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size;...

10
Пaтрик
427 / 395 / 132
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
30.08.2012, 15:26 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
 
bool CompareTwoString(const std::wstring &one, const std::wstring &two)
{
   return one > two;
}
 
int main()
{
   wchar_t *str1 = L"asd";
   wchar_t *str2 = L"bsd";
   std::cout << std::boolalpha << CompareTwoString(std::wstring(str1), std::wstring(str2));   
}
Добавлено через 1 минуту
Цитата Сообщение от Holsteng Посмотреть сообщение
Будет ли /0?.
Скорее зависит от реализации.
1
Holsteng
47 / 10 / 2
Регистрация: 26.03.2012
Сообщений: 246
30.08.2012, 15:28  [ТС] 3
Пaтрик, странно, инициализировать string wchar_t можно, а вот передать по ссылке нельзя?
0
Пaтрик
427 / 395 / 132
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
30.08.2012, 15:32 4
А что не по ссылке передается?
1
Holsteng
47 / 10 / 2
Регистрация: 26.03.2012
Сообщений: 246
30.08.2012, 15:36  [ТС] 5
А-а-а! Имя массива есть указатель на первый элемент, виноват.

Получается, что я хочу привести указатель к ссылке?
0
Kastaneda
Jesus loves me
Эксперт С++
4943 / 3020 / 346
Регистрация: 12.12.2009
Сообщений: 7,622
Записей в блоге: 2
Завершенные тесты: 1
30.08.2012, 15:51 6
Можно, просто ссылки должны быть константными.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
 
bool CompareTwoString(const std::wstring &one, const std::wstring &two)
{
   return one == two;
}
 
int main()
{
   wchar_t *str1 = L"asd";
   wchar_t *str2 = L"asd";
   std::cout << std::boolalpha << CompareTwoString(str1, str2);   
}
Добавлено через 2 минуты
Цитата Сообщение от Holsteng Посмотреть сообщение
Получается, что я хочу привести указатель к ссылке?
Нет, будет вызван неявно конструктор std::wstring(wchar_t*)
1
Holsteng
47 / 10 / 2
Регистрация: 26.03.2012
Сообщений: 246
30.08.2012, 15:51  [ТС] 7
Спасибо всем большое, сколько тонкостей!
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2012, 17:19 8
Цитата Сообщение от Holsteng Посмотреть сообщение
Будет ли /0?.
C++
1
2
3
4
string str1 = "abc";
cout << "str1.size() = " << str1.size() << endl;
char str2 [] = "abc";
cout << "sizeof(str2) = " << sizeof(str2) << endl;
1
edward_jonson
160 / 160 / 68
Регистрация: 23.02.2011
Сообщений: 392
30.08.2012, 21:15 9
Kastaneda, Почему так сильно влияет "константность" ссылки на преобразование типов (или что там)?
0
DU
1487 / 1133 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
30.08.2012, 22:14 10
в случае, когда функции передается не тот тип, который требуется и если из передаваемого типа может быть сконструирован объект нужного типа, компилятор так и делает, создается временный объект и далее в функцию передается ссылка на временный объект. но, в случае неконстантной ссылки предполагается, что внутри функции объект будет модифицироваться. не важно, модифицируется он на самом деле или нет. так вот, в посчитали, что нет смысла модифицировать временные объекты. ведь их модифицированное значение никому не достанется. ну и запретили. а вот передача по константной ссылке как-бы запрещает модификацию. поэтому в этом случае все компилируется.
2
Holsteng
47 / 10 / 2
Регистрация: 26.03.2012
Сообщений: 246
31.08.2012, 09:57  [ТС] 11
Спасибо, хорошее объяснение!
0
31.08.2012, 09:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2012, 09:57

Порядок вычисления: операторы «|» и «||», «&» и «&&»
В Java булевые операторы «|» и «||», и «&amp;» и «&amp;&amp;» отличаются друг от друга...

Friend ostream& operator<<(ostream& stream, CArr& obj);
CArr.h #pragma once class CArr{ int* arr = nullptr; int size = 10; void...

Из string в wstring
Как можно получить wstring-строку из string-строки? (символы в строке...


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

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

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