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

Конкатенация двух переменных типа int32 - C++

Восстановить пароль Регистрация
 
Forester04
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 24
27.03.2013, 09:55     Конкатенация двух переменных типа int32 #1
Друзья, уже третий день бьюсь с проблемой объединения двух получаемых из файла строк Uint32. Можно ли как-то вообще реализовать это в С++ без присвоения другого типа переменным? в C++ я чайник Прилепляю сюда кусок кода программы с моей последней попыткой.

Буду очень благодарен, если кто что подскажет. Спасибо

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <sstream>
 
typedef unsigned int  UInt32;
 
typedef struct tagWorkBlock{
    
unsigned int    CodeMsg[36];
unsigned int    CodePos[8];
unsigned int    CodeTime[28];
} WorkBlock;
 
int read_inp(WorkBlock *wb){
 
for (i=0;i<8;i++) {
fscanf(FINP,"%2x",&tmp);
wb->CodePos[i]=tmp;}
 
for (i=0;i<28;i++) {    
fscanf(FINP,"%2x",&tmp);
wb->CodeTime[i]=tmp;}
 
std::stringstream stream;
stream << wb->CodeTime << wb->CodePos;
stream >> wb->CodeMsg;
 
 fclose(FINP);
return 0;   
}

Ошибка про компиляции: no match for ‘operator>>’ in ‘stream >> wb->tagWorkBlock::CodeMsg’perator
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 09:55     Конкатенация двух переменных типа int32
Посмотрите здесь:

C++ Сравнение переменных структурного типа
Объединение (конкатенация) двух односвязных списков C++
сравение переменных типа char C++
C++ Суммирование 2-х переменных типа Char
Конкатенация двух строк C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.03.2013, 11:29     Конкатенация двух переменных типа int32 #2
C++
1
stream << wb->CodeTime << wb->CodePos;
Тут Вы выводите в строковый поток значения указателей, а не сами массивы CodeTime и CodePos.
C++
1
stream >> wb->CodeMsg;
Тут пытаетесь записать в указатель на массив. Что, собственно, не может быть реализовано.
P.S. И зачем Вы вводите
C++
1
typedef unsigned int  UInt32;
если не используете его? Хотя такой typedef тоже ни к чему хорошему не приведет. Следует использовать типы из <cstdint>.
Теперь возвращаясь к теме:
Цитата Сообщение от Forester04 Посмотреть сообщение
Друзья, уже третий день бьюсь с проблемой объединения двух получаемых из файла строк Uint32.
Что есть строка Uint32 в Вашем понимании?
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
27.03.2013, 11:37     Конкатенация двух переменных типа int32 #3
Строки с 23 по 25 замените на что-то вроде:
C++
1
2
   std::copy(wb->CodeTime, wb->CodeTime + 28, wb->CodeMsg);
   std::copy(wb->CodePos, wb->CodePos + 8, wb->CodeMsg + 28);
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.03.2013, 11:50     Конкатенация двух переменных типа int32 #4
Цитата Сообщение от Forester04 Посмотреть сообщение
Друзья, уже третий день бьюсь с проблемой объединения двух получаемых из файла строк Uint32. Можно ли как-то вообще реализовать это в С++ без присвоения другого типа переменным?
инты не конкатенируют, их складывают. Или речь о сборке int64_t из двойных слов? Ну так пиши в старшее и в младшее двойное слово по адресам.

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
uint32_t h;
uint32_t l;
int64_t x;
...
/*Для интелла:*/
(*(uint32_t *)(&x))=l;
(*((uint32_t *)(&x)+1))=h;
/*Для мотороллы:*/
(*(uint32_t *)(&x))=h;
(*((uint32_t *)(&x)+1))=l;
/*Универсально:*/
x=((int64_t)l)+(((int64_t)h)<<32);
Forester04
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 24
27.03.2013, 13:21  [ТС]     Конкатенация двух переменных типа int32 #5
Цитата Сообщение от anmartex Посмотреть сообщение
Строки с 23 по 25 замените на что-то вроде:
C++
1
2
   std::copy(wb->CodeTime, wb->CodeTime + 28, wb->CodeMsg);
   std::copy(wb->CodePos, wb->CodePos + 8, wb->CodeMsg + 28);

Это сработало! Вы помогли мне сделать именно то, что я и хотел.

Спасибо большое!


И всем остальным тоже спасибо за помощь
Yandex
Объявления
27.03.2013, 13:21     Конкатенация двух переменных типа int32
Ответ Создать тему
Опции темы

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