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

Сложение массива типа char в одну переменную - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.72
vadim09
6 / 6 / 1
Регистрация: 04.08.2012
Сообщений: 62
01.02.2013, 02:53     Сложение массива типа char в одну переменную #1
Здравствуйте, уважаемые форумчани, помогите разобраться с такой простой задачей.

Есть массив char Arr[5]={'1','a','3','b','5','c'}. Хотелось бы сложить элементы массива в одну переменную, и что б результат сложения был 1a3b5c.

Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2013, 02:53     Сложение массива типа char в одну переменную
Посмотрите здесь:

C++ bool + int + char в одну переменную
C++ Как сравнить переменную типа char
C++ Не могу обнулить переменную типа char
C++ Очистить переменную типа char *
C++ Как вернуть переменную типа char * из функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.02.2013, 02:59     Сложение массива типа char в одну переменную #2
По сути строка и есть массив символов:
C++
1
2
char arr[]={'1','a','3','b','5','c','\0'};
     cout<<arr;
Хотите типа string? Пожалста:
C++
1
2
3
4
std::string str;
for (int i = 0; i<strlen(arr); ++i)
    str += arr[i];
cout<<str;
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
01.02.2013, 03:46     Сложение массива типа char в одну переменную #3
А не шестнадцатиричного ли числа от нас ждут?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <windows.h>
#include <ctype.h>
 
int main()
{
    char arr[6]={'1','a','3','b','5','C'};
    
    int x= 0;
    
    for (int i= 0; i< sizeof(arr); i++ ) {
     x*=0X10;
     isdigit(arr[i])?x+=arr[i]-48:x+=toupper(arr[i])-55;
    }
    
    printf ("%x\n", x);
    
    getchar ();
    
    return 0;
}
vadim09
6 / 6 / 1
Регистрация: 04.08.2012
Сообщений: 62
01.02.2013, 12:15  [ТС]     Сложение массива типа char в одну переменную #4
Цитата Сообщение от BumerangSP Посмотреть сообщение
По сути строка и есть массив символов:
C++
1
2
char arr[]={'1','a','3','b','5','c','\0'};
     cout<<arr;
Хотите типа string? Пожалста:
C++
1
2
3
4
std::string str;
for (int i = 0; i<strlen(arr); ++i)
    str += arr[i];
cout<<str;
Странно, компилятор ругается в cout<< на "<<" .
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

Добавлено через 1 минуту
Добавлено через 6 минут
Цитата Сообщение от kravam Посмотреть сообщение
А не шестнадцатиричного ли числа от нас ждут?
Да, 16-го, но это частный случай. В общем случае любой системы счисления. Просто я сделал перевод чисел из 10-ной СС в любую другую. И записывается это всё в массив, а нужно, что б записалось в одну переменную.

Вот я и хочу, присвоить одной переменной сумму элементов массива.
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
01.02.2013, 12:32     Сложение массива типа char в одну переменную #5
Цитата Сообщение от vadim09 Посмотреть сообщение
Странно, компилятор ругается в cout<< на "<<" .
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
подключи #include <string>

Добавлено через 2 минуты
и сделать проще можно
C++
1
2
3
4
5
    char arr[]={'1','a','3','b','5','c','\0'};
    cout<<arr; 
    int SizeOfArr = sizeof(arr)/sizeof(arr[0]);
    std::string str(arr, arr + SizeOfArr);
    cout<<str;
vadim09
6 / 6 / 1
Регистрация: 04.08.2012
Сообщений: 62
01.02.2013, 14:09  [ТС]     Сложение массива типа char в одну переменную #6
Цитата Сообщение от John Prick Посмотреть сообщение
подключи #include <string>
Тю блин, вроде ж был подключен. Спасибо, вы мне помогли!

Добавлено через 38 минут
Господа, помогите, всё равно неверно получается

Когда, к примеру, я перевожу 255 в 16-ричную - всё отлично переводиться пишет FF, но когда берем другие числа и переводим например 427 в 16-ную должно быть 1AB, а в консоле я вижу смайлик. Почему так происходит? Почему буквы нормально воспринимает, а цифры переводит в ANSI ?

Добавлено через 48 минут
Всё, уже разобрался сам)
Yandex
Объявления
01.02.2013, 14:09     Сложение массива типа char в одну переменную
Ответ Создать тему
Опции темы

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