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

Способы конкатенации переменных строкового типа и Char - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Dragokas
Автор FAQ
 Аватар для Dragokas
14529 / 6356 / 785
Регистрация: 25.12.2011
Сообщений: 9,897
Записей в блоге: 14
19.06.2012, 00:19     Способы конкатенации переменных строкового типа и Char #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    char *_new = "\\formats..";
    char newname[1024];
 
    wsprintf(newname,"%s.\\",_new);
 
    cout << newname;
    
    getchar();
    return 0;
}
Получаю ошибку:
error C2664: wsprintfW: невозможно преобразовать параметр 1 из "char [1024]" в "LPWSTR"

1. Как исправить ощибку?
2. Возможно ли по-другому переписать код?
3. Как будет выглядеть значение переменной newname в результате выполнения этой проги?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 00:19     Способы конкатенации переменных строкового типа и Char
Посмотрите здесь:

сравение переменных типа char C++
C++ Суммирование 2-х переменных типа Char
C++ Конвертация строкового типа в int
C++ Выручайте! Данные строкового типа
Аргумент типа char (*)[1000] несовместим с параметром типа char** C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
19.06.2012, 00:44     Способы конкатенации переменных строкового типа и Char #2
C++
1
sprintf(newname,"%s.\\",_new);
или
C++
1
2
strcpy(newname, _new);
strcat(newname, ".\\");
или же вообще std::string использовать.

Добавлено через 1 минуту
Цитата Сообщение от Diskretor Посмотреть сообщение
3. Как будет выглядеть значение переменной newname в результате выполнения этой проги?
\formats...\
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
19.06.2012, 00:47     Способы конкатенации переменных строкового типа и Char #3
напиши всесто char TCHAR, и все будет хорошо.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
19.06.2012, 00:55     Способы конкатенации переменных строкового типа и Char #4
Цитата Сообщение от novi4ok Посмотреть сообщение
напиши всесто char TCHAR, и все будет хорошо.
Если TCHAR, то тогда уж правильнее будет использовать _stprintf.
Dragokas
Автор FAQ
 Аватар для Dragokas
14529 / 6356 / 785
Регистрация: 25.12.2011
Сообщений: 9,897
Записей в блоге: 14
19.06.2012, 02:29  [ТС]     Способы конкатенации переменных строкового типа и Char #5
Ок, thanx, работает.

А функция wsprintf() w - наверно для юникода?

Цитата Сообщение от grizlik78 Посмотреть сообщение
или же вообще std::string использовать.
можете расписать полностью... в готовом виде.

novi4ok, можете тоже полностью расписать... "просто вместо" не получается. Интерпретатор такое не знает, а я не правильно записываю (пока изучаю).
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
19.06.2012, 02:44     Способы конкатенации переменных строкового типа и Char #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <cstdio>
 
using namespace std;
 
int main()
{
    char const* _new = "\\formats..";
    string newname;
 
    newname = string(_new) + ".\\";
 
    cout << newname << endl;
    // для преобразовать к Си-строкам есть функция .c_str() :
    cout << newname.c_str() << endl;
    
    getchar();
    return 0;
}
Yandex
Объявления
19.06.2012, 02:44     Способы конкатенации переменных строкового типа и Char
Ответ Создать тему
Опции темы

Текущее время: 15:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru