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

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

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

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

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

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

C++
1
2
3
char *token = "Слово";
 
char *one_char; //Нужно сделать массив состоящий из первого символа token, как это сделать?)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2012, 18:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ из char[] в *char (C++):

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( - C++
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*) - C++
Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа Помогите...

Различное поведение функции которая копирует строки с char* t и char t[] - C++
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в другую: void strstr(char* t,...

Ошибка: call of overloaded 'strchr(char&, char)' is ambiguous - C++
Здравствуйте, прога почему-то ругается на функцию strchr, вот кусок кода: #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 18:49 #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;
}
1
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
13.11.2012, 19:02 #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) (== ???) символов?
0
Croessmah
Эксперт CЭксперт С++
13208 / 7479 / 840
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
13.11.2012, 19:04 #4
В дополнение - забыли
C++
1
delete[]
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
13.11.2012, 19:08 #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;
}
и всё на этом.
0
From_Tula
40 / 40 / 2
Регистрация: 22.05.2009
Сообщений: 482
13.11.2012, 19:15  [ТС] #6
kravam, Не все так просто...
one_char = "WММММММММ„xA"//вот что попадает в one_char в твоем примере

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

В php блин никаких запаров...=)
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
13.11.2012, 19:21 #10
Цитата Сообщение от extenup Посмотреть сообщение
C++
1
char *one_char = new char(strlen(token));
Не известно что находится в строке one_char, но отлично известна его длина..
Может нужны квадратные скобки?
0
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:25 #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Может нужны квадратные скобки?
Можно и квадратные и круглые, без разницы.
0
Croessmah
Эксперт CЭксперт С++
13208 / 7479 / 840
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
13.11.2012, 19:30 #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
0
Somebody
2789 / 1603 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
13.11.2012, 19:30 #13
Цитата Сообщение от extenup Посмотреть сообщение
Можно и квадратные и круглые, без разницы.
Нет, не без разницы. Говорю же:
new char[10] - это 10 char'ов, а new char(10) - это 1 char, который равен 10.
0
Croessmah
Эксперт CЭксперт С++
13208 / 7479 / 840
Регистрация: 27.09.2012
Сообщений: 18,388
Записей в блоге: 3
Завершенные тесты: 1
13.11.2012, 19:37 #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, Твой способ нормально отработал, спасибо
Вам просто повезло!
0
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
13.11.2012, 19:37 #15
Цитата Сообщение от Somebody Посмотреть сообщение
Нет, не без разницы. Говорю же:
new char[10] - это 10 char'ов, а new char(10) - это 1 char, который равен 10.
Да, точно.)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 19:37
Привет! Вот еще темы с ответами:

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...

Сделать преобразование unsigned char в char, а затем типу int - C++
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char - для копеек. Собственно что мне...

функция возвращает массив слов, содержащихся в текстовом сообщении char* Words(char *s) - C++
Стоит такая задача: функция должна возвратить массив слов, содержащихся в текстовом сообщении char* Words(char *s) Как это можно...

Ошибка в работе с файлами: error: incompatible types in assignment of ‘char*’ to ‘char* [255]’ - C++
Суть задания Есть файл допустим 1.txt нужно выполнить обработку этого файла а результат вывести в этот же файл с другим расширением ...


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

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

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