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

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

Войти
Регистрация
Восстановить пароль
 
 
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 482
#1

С++ из char[] в *char - C++

13.11.2012, 18:34. Просмотров 889. Ответов 28
Метки нет (Все метки)

Совсем забыл с++ ...

C++
1
2
3
char *token = "Слово";
 
char *one_char; //Нужно сделать массив состоящий из первого символа token, как это сделать?)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 18:49     С++ из char[] в *char #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
 
int main()
{
    char *token = "Word";
    char *one_char = new char(strlen(token));
    memcpy(one_char, "\0", strlen(one_char)); // Чищу строку
 
    memcpy(one_char, token, 1); // Копирую первый символ строки token
    printf("%s\n", one_char);
 
    return 0;
}
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
13.11.2012, 19:02     С++ из char[] в *char #3
C++
1
char *one_char = new char(strlen(token));
Круглые скобки - получается new char, который инициализируется значением strlen(token). В отличие от new char[...].
C++
1
memcpy(one_char, "\0", strlen(one_char));
1) one_char указывает на неизвестно какую строку, чему же будет равен strlen???
2) "\0" - это строка из двух char'ов, а что после неё - неизвестно. Как же можно из неё копировать strlen(onechar) (== ???) символов?
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
13.11.2012, 19:04     С++ из char[] в *char #4
В дополнение - забыли
C++
1
delete[]
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
13.11.2012, 19:08     С++ из char[] в *char #5
C++
1
2
3
4
5
6
7
8
#include <stdio.h>
int main()
{
  char *token = "Word";
  char one_char [1];
  one_char [0]= token[0]; 
  return 0;
}
и всё на этом.
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 482
13.11.2012, 19:15  [ТС]     С++ из char[] в *char #6
kravam, Не все так просто...
one_char = "WММММММММ„xA"//вот что попадает в one_char в твоем примере

extenup, Твой способ нормально отработал, спасибо
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
13.11.2012, 19:17     С++ из char[] в *char #7
Цитата Сообщение от From_Tula Посмотреть сообщение
extenup, Твой способ нормально отработал
Если бы всегда людям так сильно везло...
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:18     С++ из char[] в *char #8
Цитата Сообщение от Somebody Посмотреть сообщение
1) one_char указывает на неизвестно какую строку, чему же будет равен strlen???
C++
1
char *one_char = new char(strlen(token));
Не известно что находится в строке one_char, но отлично известна его длина..
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 482
13.11.2012, 19:21  [ТС]     С++ из char[] в *char #9
Ладно, в итоге есть такой способ с которым согласятся все?))

В php блин никаких запаров...=)
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
13.11.2012, 19:21     С++ из char[] в *char #10
Цитата Сообщение от extenup Посмотреть сообщение
C++
1
char *one_char = new char(strlen(token));
Не известно что находится в строке one_char, но отлично известна его длина..
Может нужны квадратные скобки?
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:25     С++ из char[] в *char #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Может нужны квадратные скобки?
Можно и квадратные и круглые, без разницы.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
13.11.2012, 19:30     С++ из char[] в *char #12
Цитата Сообщение от extenup Посмотреть сообщение
Можно и квадратные и круглые, без разницы.
разница такая, что с круглыми будет выделена память для одного char'а и туда будет записан символ с кодом равным длине строки token
Цитата Сообщение от extenup Посмотреть сообщение
Не известно что находится в строке one_char, но отлично известна его длина..
зато здесь его длина не известна:
C++
1
memcpy(one_char, "\0", strlen(one_char))
"\0" - предаствляется как '\0''\0'
Цитата Сообщение от From_Tula Посмотреть сообщение
one_char = "WММММММММ„xA"//вот что попадает в one_char в твоем примере
Потому что вы пытаетесь его вывести как строку, а в ней нет символа \0
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
13.11.2012, 19:30     С++ из char[] в *char #13
Цитата Сообщение от extenup Посмотреть сообщение
Можно и квадратные и круглые, без разницы.
Нет, не без разницы. Говорю же:
new char[10] - это 10 char'ов, а new char(10) - это 1 char, который равен 10.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
13.11.2012, 19:37     С++ из char[] в *char #14
Цитата Сообщение от From_Tula Посмотреть сообщение
Нужно сделать массив состоящий из первого символа token, как это сделать?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    char *token="Word";
    char *one_char=new char;
    *one_char=token[0];
    cout<<*one_char<<endl;
    cin.get();
    delete one_char;
    return 0;
}
Это? Или я не совсем понял что необходимо

Добавлено через 1 минуту
Цитата Сообщение от From_Tula Посмотреть сообщение
extenup, Твой способ нормально отработал, спасибо
Вам просто повезло!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 19:37     С++ из char[] в *char
Еще ссылки по теме:
C++ Как перейти от char[100] к *char?
В чем разница между char* и char ** C++
C++ char char* string и константные значения
C++ Невозможно преобразовать из char в const char
C++ Invalid conversion from 'char' to 'const char*'

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

Или воспользуйтесь поиском по форуму:
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:37     С++ из char[] в *char #15
Цитата Сообщение от Somebody Посмотреть сообщение
Нет, не без разницы. Говорю же:
new char[10] - это 10 char'ов, а new char(10) - это 1 char, который равен 10.
Да, точно.)
Yandex
Объявления
13.11.2012, 19:37     С++ из char[] в *char
Ответ Создать тему
Опции темы

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