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

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

Войти
Регистрация
Восстановить пароль
 
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
#1

Конвертирование в wstring& - C++

30.08.2012, 15:14. Просмотров 693. Ответов 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& (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Пaтрик
415 / 390 / 38
Регистрация: 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 / 3
Регистрация: 26.03.2012
Сообщений: 246
30.08.2012, 15:28  [ТС] #3
Пaтрик, странно, инициализировать string wchar_t можно, а вот передать по ссылке нельзя?
0
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
30.08.2012, 15:32 #4
А что не по ссылке передается?
1
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
30.08.2012, 15:36  [ТС] #5
А-а-а! Имя массива есть указатель на первый элемент, виноват.

Получается, что я хочу привести указатель к ссылке?
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 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 / 3
Регистрация: 26.03.2012
Сообщений: 246
30.08.2012, 15:51  [ТС] #7
Спасибо всем большое, сколько тонкостей!
0
alsav22
5420 / 4816 / 442
Регистрация: 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
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
30.08.2012, 21:15 #9
Kastaneda, Почему так сильно влияет "константность" ссылки на преобразование типов (или что там)?
0
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.08.2012, 22:14 #10
в случае, когда функции передается не тот тип, который требуется и если из передаваемого типа может быть сконструирован объект нужного типа, компилятор так и делает, создается временный объект и далее в функцию передается ссылка на временный объект. но, в случае неконстантной ссылки предполагается, что внутри функции объект будет модифицироваться. не важно, модифицируется он на самом деле или нет. так вот, в посчитали, что нет смысла модифицировать временные объекты. ведь их модифицированное значение никому не достанется. ну и запретили. а вот передача по константной ссылке как-бы запрещает модификацию. поэтому в этом случае все компилируется.
2
Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
31.08.2012, 09:57  [ТС] #11
Спасибо, хорошее объяснение!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2012, 09:57
Привет! Вот еще темы с ответами:

Из string в wstring - C++
Как можно получить wstring-строку из string-строки? (символы в строке латинские, поэтому проблем вроде бы возникать не должно)

Friend ostream& operator<<(ostream& stream, CArr& obj); - C++
CArr.h #pragma once class CArr{ int* arr = nullptr; int size = 10; void swap(int *a, int *b); void swap(int &amp;a, int &amp;b); ...

Вывод wstring в файл - C++
bool addCategory(const std::wstring&amp; name_category) { wfstream fio = initAndCheckWFSTREAM(FILENAME_CATEGORY, ios_base::app |...

wstring to int с делемиттером - C++
Как вытащить из wstring, например такой &quot;333, 555, 666, 777, 888&quot;, инты?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.08.2012, 09:57
Ответ Создать тему
Опции темы

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