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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
radx
2 / 2 / 0
Регистрация: 31.01.2009
Сообщений: 12
#1

Возвращение функцией wchar_t значения. - C++

04.02.2009, 01:19. Просмотров 2193. Ответов 6
Метки нет (Все метки)

Такой вопросик.

Нижеследующий код - это концепция.

в качестве аргумента функции должна быть переменная типа wchar_t, функция должна произвести некоторые манипуляции со значеним агрумента и отдать получившиюся строку тоже в типе wchar_t , "отдать" можно либо через return или вернуть вторым аргументом функции (как правильно?)

C++
1
2
3
4
5
6
7
8
9
10
11
whar_t myfunc(*str1)
{
    str1=L"string was changed";
    return str1;
}
 
main()
{
    wchar_t string[255]=L"Foobar";
    string = myfunct(string);
}
Как подобное можно сделать? Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2009, 01:19     Возвращение функцией wchar_t значения.
Посмотрите здесь:

Возвращение функцией значения динамического массива структур - C++
Auto readfile() { ifstream file(file); int i = 0, color; Auto *A = new Auto; while (!file.eof()) { file >> A.name >>...

Возвращение функцией объекта - C++
Здравствуйте. Это пример из книжки. #include <iostream> using namespace std; class MyClass { int val; public: MyClass(int...

Возвращение функцией массива (или указателя на массив) - C++
Вопрос опытным. Имеется массив картинок TImage, который создается одной функцией. Как вызвать этот же массив из другой функции? void...

Возвращение значения - C++
Понятно, когда функция возвращает число или тип bool, вот так: return true; return 0; return -1; и т.п. но что может означать...

Про возвращение значения 2... - C++
если в строке идентификатор,то возвратить ф-ции значение 1=да, 0=нет как индефикатор в общем показать?

Про возвращение значения... - C++
Как написать ф-цию,возвращающую значение 1,если в строке содержится хотя бы один символ "." ?

Возвращение значения из функции - C++
Ребят, подскажите, когда функция возвращает значение из функции, то в памяти создается копия значения? Я все время думал что функция на...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
04.02.2009, 01:31     Возвращение функцией wchar_t значения. #2
И через return правильно и через аргумент, если он по указателю. Оба способа вполне применимы.
Возвращать она должна указатель, кстати, а wchar_t - это только символ.
Как-как... передать указатель wchar_t* в параметре. В функции меняем. Все. Либо меняем и возвращаем wchar_t*.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.02.2009, 01:43     Возвращение функцией wchar_t значения. #3
в функцию подаёшь строку, а она её меняет, причём никаких других строк нет, только одна строка и функция, которая её меняет

на простых выглядит так

Код
    char *func(char *);
    char s[100] = "abcd", *p = s;

    if ((p = func(p)) == NULL)
        return 1;
    

char *func(char *s)
{
     return sprintf(s, "new") < 0 ? NULL : s;
}
radx
2 / 2 / 0
Регистрация: 31.01.2009
Сообщений: 12
04.02.2009, 02:15  [ТС]     Возвращение функцией wchar_t значения. #4
accept, спасибо за наглядный пример... но все равно не пойму, что за обязательный изврат с sprintf ?
Почему нельзя в функции просто написать:

C++
1
2
3
4
5
char *func(char *s)
{
    s="new";
    return s;
}
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.02.2009, 02:33     Возвращение функцией wchar_t значения. #5
она указателю s присвоит адрес первого символа строковой константы и вернёт адрес первого символа этой строковой константы, т.е. строка останется неизменной, а строковая константа вроде записывается в статическую область, но на то она и константа, что её нельзя менять
а sprintf заносит символы начиная с адреса в указателе p в последующие ячейки памяти, т.е. строка меняется (если указатель неправильный функция не сможет записать значение и вернёт EOF он меньше нуля)
radx
2 / 2 / 0
Регистрация: 31.01.2009
Сообщений: 12
04.02.2009, 04:19  [ТС]     Возвращение функцией wchar_t значения. #6
accept, ага, ясно.
sprintf - это у нас для типа char хороша, в моем же случае нужно использовать что-то типа wprintf....

И тут интересный момент, если используется либа ncurses и запущена форма (initscr()) - wprintf не работает в данном контексте((

Добавлено через 34 минуты 51 секунду
всё, разобрался)

Спасибо!

может кому-то понадобиться, нужно делать через swprintf

что-то типо такого:

C++
1
2
3
4
5
wchar_t *f(wchar_t *w)
{
    wchar_t new_str[255]=L"gogogo";
    return swprintf(w,255,new_str) < 0 ? NULL : w;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2009, 10:23     Возвращение функцией wchar_t значения.
Еще ссылки по теме:

Возвращение вычисленного значения - C++
Пусть v1=v2=0; v3=1.5; vi=((i+1)/i^2+1))*V(i-1)-V(i-2)*V(i-3); i=4.5, ...Дано натуральное число n (n&gt;=4).Значение переменной n передается в...

Возвращение значения функции - C++
Подскажите, что означает эта запись, что она возвращает понять не могу. static FUnknown* createInstance (void* context) { ...

Возвращение значения функции - C++
Я создала структуру и конструктор. Нужно создать функцию типа этой структуры add_one_minute, которая будет прибавлять одну минуту. Но я не...

Возвращение значения в классе - C++
Подскажите, плиз, один нюанс в проге. Вот листинг (сильно в него можно и не вникать кроме кое-каких строк): #include &lt;iostream&gt; ...

возвращение ненулевого значения - C++
Подскажите если функция возвращает ненулевое значение оно каждый раз меняется или как. Вот например #include &lt;iostream.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.02.2009, 10:23     Возвращение функцией wchar_t значения. #7
там вроде вообще все функции для одинарных продублированы в двойные
getchar - getwchar
Yandex
Объявления
04.02.2009, 10:23     Возвращение функцией wchar_t значения.
Ответ Создать тему
Опции темы

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