C++ :: Way / Pattern To Avoid Copying Data

Apr 19, 2013

I have a class buffer, which holds a std::string as member, and a socket_receive function:

struct buffer {
string data;
buffer() {}
buffer(buffer& b) : data(b.data) {}
};
buffer socket_receive() {
buffer tmp;
tmp.data = "1234";
return tmp;
}

so when I write

buffer b = socket_receive();

there is a copy constructor, and the tmp variable is constructed and destructed, is there anyway to improve the performance?

I tried the new c++11 move(), but seems even worse, I must be doing wrong with move(), but I don't know how.

#include <iostream>
#include <string>
#include <ctime>
using namespace std;
struct buffer {
string data;

[Code] .....

View 4 Replies


ADVERTISEMENT

C++ :: Copying Data Allocated By New Object

Dec 21, 2013

I have an abstract class Base, with derived classes Derived1, Derived2, etc. I don't know how many there are. So, I have declared an object of Derived like so:

Base* der1 = new Derived1(/* constructor details */);

That gets passed to a function, which modified the data contained by this pointer. However, I need to keep the data from the object, which means that I need to copy the data somehow. The problem is, this copying needs to be done within the function, due to the requirements of the program. I do not know what type the object is, This function will need to reset this data potentially hundreds of times, so I can't just provide lots of objects, as either the function will run out of objects to call or I will run out of space in memory.

How would I create a copy of this, so that I would be modifying a temporary object that could be deleted and I would keep the data that I started with?

View 4 Replies View Related

C# :: Create Byte Array From IntPtr Without Copying Data

Apr 18, 2012

let's say I have an IntPtr that points to the raw data of System.Drawing.Bitmap. is there any way to create a byte array from that IntPtr without copying the data? I'm a pretty experienced C++ programmer, so I can call ToPointer() on it and convert to a byte* to work with it as a pointer, which is no big deal for me, but using a pointer and doing pointer arithmetic increases the risk of bugs, so I'd prefer not to do it that way if there's another way.

View 4 Replies View Related

C++ :: Memento Pattern Failing Because Of Pointer Data Members

May 24, 2014

All the undos and redos were working fine until the pointer data members came into the picture. The problem is that the values pointed to changed, but the pointers themselves did not. So restoring gives the same pointers but they still point to the new values. I think the solution is that the classes that are the pointer data members themselves need their own Mementos (which would be a lot of work because there are many data member pointers in my program). Is that the only approach?

Here is a sample code to show what I'm talking about. You can compile and run the program to see the problem it has restoring values of pointer data members:

#include <iostream>
#include <string>
#include <memory>
#include <vector>
#include <list>
#include <cstdlib>
#include <ctime>
class FoodHistory {

[Code] ....

View 2 Replies View Related

C :: How To Avoid Negative Output

Jul 12, 2013

I have a c program that I partially have working. The problem is basically writing a program that allows the user to input the amount of calories they plan to eat a meal and disperse the calories from top to bottom. My program produces the output in the example if I enter 1050 but the issue I noticed if the number of calories is just enough to cover the burgers I get negatives in the other variables.

For example, if I enter a total amount of calories of 1050, I can eat: Output: 2 burgers @ 770 calories (1050 - 770 = 280 calories remain) 1 bag of pretzles @ 170 calories (280 - 170 = 110 calories remain) 1 pear @ 80 calories (110 - 80 = 30 calories remain) 6 tsp. ketchup @ 30 calories If I input 1050 I get the above output but if I input a different integer such as 2000 this is my output 5 burgers @ 1925 calories 0 bag of pretzles @ 0 calories -1 apple @ -80 calories -35 tsp. ketchup @ -175 calories I can't give the full code since this assignment holds a lot of points and was up all night getting it work.

So I'll provide pseudocode

define all 4 variables burger 385, pretzel 170, pear 80, ketchup 5 print out text How many calories can you eat prompt user input
Divide user input into burger How many burgers can bet eaten subtract calories eaten from original user input
Divide calories left into pretzel How many bags can bet eaten subtract burger calories from pretzel calories
Divide calories left after preztel into pear How many pretzels can be eatn subtract pretzels calories from pear calories
Divide calories left over into ketchup how much ketchup can i use show on screen (int total)of burgers @ (int calorie total) calories show on screen (int total)bags of pretzels @ (int calorie total) calories show on screen (int total)pears @ (int calorie total) calories show on screen (int total)teaspoons of ketchup @ (int calorie total) calories

The problem I see is that subtracting the calories from the pear from the left over calories of the pretzel calories leads to a negative. If leftover calories minus 80(pear int) its less then 0 . The calculations from the pear onward to ketchup become incorrect resulting in negative output.

View 6 Replies View Related

C/C++ :: Avoid Using The Goto Function?

Dec 17, 2014

I've been making an RPG in C++ and I've used goto all throughout the program. After receiving an error and Googling how to fix it, I read that you shouldn't use goto. What can I use as a instead of goto, which isn't 'considered bad programming practice'?

View 9 Replies View Related

C++ :: How To Avoid Redundant Code In Classes

Sep 4, 2014

ISSUE: How to avoid redundant code in c++ ?

Problem:Say I have a Base class called Car and it has 3 derived classes say Ford, Honda and Audi.

now the issue is all 3 derived classes have exactly same code but minor difference in calling member functions of their r respective engines( these engines have separate class) . example ford class calls code which is exactly same as other 2 classes but do call something like ford_engine-> start() ford_engine->clean() bla bla bla .

//ly honda calls honda_engine->start() honda_engine->clean();

//ly Audi calls audi_engine->start() audi->clean();

now here the issue is it has redundant code in all 3 places with minute difference. Hoow I can have code at one place most probably in Base class and all derive classes uses same code.

View 1 Replies View Related

C# :: How To Avoid Duplicate Updates In SQL Query

Jun 13, 2014

I have table called leavetable where in i have the fields eid, lfrom,lto, reason,status an employee will insert these fields in the leave form except status, status will be updated by admin but there is no unique field in the table so when the admin updates the status as cancel for an id emp001 so whereever this id is present in the table its getting updated to cancel even though it is approved previously.. How to avoid this duplication ?

SqlConnection con = new SqlConnection(Connectionstring);
con.Open();
string sql = "update leavetable set status = '"+status+"' where eid = '"+textBox1.Text+"' and noofdays = '"+textBox5.Text+"'";

[Code] .....

View 7 Replies View Related

C/C++ :: How To Avoid Replacing Element In Array

Oct 6, 2014

I am working on a parking lot scenario project using multidimensional arrays. The parking lot has 8 rows and 10 parking spaces in each row. Altogether there are suppose to be 30 cars parking in the lot and arrive in numerical order. I am suppose to generate a random number to represent the row and another to represent the space in the row.

The problem I have is that a few of the elements are being replaced. The project requires the car to check if the space is taken, if so it is to find another one. Here is what I have...

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 8
#define COL 10
#define CARS 30
void parkTheCars(int result[ROW][COL]);
void displayArray (int result[ROW][COL]);

[Code] .....

View 1 Replies View Related

C++ :: Can Avoid Class Using Array Operator?

Feb 7, 2014

Imagine these simple class:

Code:
class test {
public:
void write(string a) {
cout << a;
}
};

(these class wasn't tested... it's for these question)... Can avoid the class use the array operator('[]')?

View 7 Replies View Related

Visual C++ :: How To Avoid Memory Fragments

Mar 4, 2015

I am developing a Visual C++ application. There is an object called CMyObject, as follows:

typedef CMap<UINT, UINT, void *, void*> CMyMap;
class CMyObject {
public:
CMyMap *m_pMyMap;
"Some other member variables"
}

Some instances of CMyObject contains a map, some not. Therefore, to save memory, I define a pointer m_pMyMap and create a new CMap object only if the instance contains a map.

When I test my app, with the increase of the CMyObject instance, the number of memory blocks allocated and deallocated is also increasing. There are a lot of fragments during this period. To prevent this, I try to override the new/delete operator for CMyObject and CMyMap. But still find many fragments. So I try to trace into the MFC source codes for CMap. I find CMap is just using an internal buffer to store the hash table(m_pHashTable), as follows:

m_pHashTable = new CAssoc* [nHashSize];

And for each hash entry, it uses:

P = (CPlex *)new BYTE[sizeof(CPlex) + nMax *cbElement];

To allocate the spaces.

I believe these two may be the reason of the memory fragments and want to eliminate them. However, is there a way to override the new/delete operator for codes such as:

new CAssoc* [nHashSize]
and
(CPlex *)new BYTE[sizeof(CPlex) + nMax *cbElement]

So that the spaces will be allocated from my own memory manager instead of from the default heap?

View 1 Replies View Related

C++ :: How To Avoid Using Backspace Character With Push Back

Mar 28, 2014

How to avoid using Backspace character with push_back? I'm making a software as an ATM, so when the user try to enter the password the user only sees *******, but when trying to delete it doesn't delete a character. It just adds a new one. Here's my code:

string password2 = "";
cout << "PASSWORD: ";
ch = _getch();
while(ch != 13) //character 13 is enter {
password2.push_back(ch);
cout << '*';
ch = _getch();
}

And also, I try to use pop_back(); but it doesn't work either.

View 6 Replies View Related

C++ :: How To Avoid If Fstream Opens A Directory (infinite Loop)

Jun 10, 2013

If the filename below is a directory, then the following loop goes to infinite.

std::ifstream in;
in.open(filename, std::ifstream::in);
if(in.fail()) return;

[Code].....

View 1 Replies View Related

C :: Copying Between Arrays?

Jun 12, 2013

I'm doing a 1Mb memory dump like this:

Code:

for (int i = 0; i < 0x00100000; i++) {
dump[i] = *(chipmemory+i);
} // i

Then I save the 1Mb "dump" array to a file, and the file contains the data I expect.

The problem arises when I try to write data back to the array beginning at the "chipmemory" pointer:

Code:
unsigned char msga[18] = "SOME MODIFIED DATA";
int address = 172378;
for (int i = 0; i < 18; i++) {
*(chipmemory+address) = msga[i];
address++;
} // i

Is this the correct way to write back to an address 172378 bytes from the "chipmemory" pointer? or is my code broken somewhere else?

View 8 Replies View Related

C/C++ :: Copying Value From One Vector To Another?

Aug 2, 2012

I have declared two vectors:

std::vector<Class 1> object1;
std::vector<Class 2> object2;

object1 has some value which I want to copy in object2? Is it possible to do?

View 5 Replies View Related

C :: Copying String To Clipboard?

Jun 6, 2014

How to make a C function, that will be copying string to the clipboard?(so during execution it copies to cliboard, and after the program ends its execution I will be able to do "Ctrl-V" and paste the things copied)?.

I assume that linux have some sort of in-kernel clipboard which can be filled with some systemcall?

View 4 Replies View Related

C++ :: Copying A File That Cannot Be Opened

Apr 23, 2014

how I would code copying a file that cannot be opened (eg. any file that isn't ANSII format).

I know that for a .txt or something like that I could simply do

#include <iostream>
#include <fstream>
#include <string>

[Code].....

how I would copy a file's contents into a char buffer and copy it over to another file for files that can't be opened/read in notepad? (Example: a rar file or a .exe ) Not sure if that makes

View 2 Replies View Related

C++ :: Copying One File To Another - I/O Stream

Mar 4, 2013

I'm having some trouble with copying one I/O stream into another. I've put the first one into an array but I cannot get my second prompt to copy the .txt file the first prompt sees and outputs to the console. When I try and grab the info from the .txt file my first prompt sees I only see blank space in my .txt file.

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <fstream>
using std::ifstream;
using std::ofstream;

[Code] .....

View 1 Replies View Related

C/C++ :: Copying All Files From One Folder Into Another

Mar 27, 2014

I'm trying to make a program that will copy all files from one folder in to another folder.

Ex path:
From: G:ExExF1
To: C:EXAll

I'm using Visual studio express C++ as the IDE. I have tried using this code:

bool copy_functions::CopyAll(string InPath,string OutPath) {
ifstream In(InPath.c_str(),ios::in|ios::binary);
ofstream Out(OutPath.c_str(),ios::out|ios::binary);

[Code] ....

But I always get booth could not be opened for copying messages even thug I use the absolute paths for the folders.

View 5 Replies View Related

C :: Copying Characters From One String To Another With Pointers?

Apr 14, 2013

So I'm writing a function isPalindrome() that can accept a string as an argument, and copy from it only the alphabetic characters in the argument (original) string to another string named alpha_array which contains only the alphabetic characters. Then the function should be able to call the isPurePalindrome function to determine if alpha_array is an ordinary palindrome.

The problem is that when I call isPalindrome in main, the program crashes.

Here's the code I have for isPurePalindrome and isPalindrome:

Code:

/* 1 */
int isPurePalindrome( const char * sentence ) // Can accept strings, array and pointer arguments
{
// Declarations

[Code].....

View 4 Replies View Related

C :: Splitting String And Copying It Over To A Struct

Sep 26, 2013

I'm having trouble with this code. What I'm trying to do is to read a line from a file and cut that line into two pieces, one is the keyword and the other is the definition. I want to read up to when there is a dash and assign that line to key and then assign the rest of the line to def. After that I copy key to the struct DictEntries.key and def to DictEntries.def. The output of this shows only the definition for both DictEntries.key and DictEntries.def but if I use "puts(key);" I see the keyword.

Code:

while(!feof(dictionary))
{
char line[200];
char *key,*def;
fgets(line,sizeof(line),dictionary);
key = strtok(line,"-");
}

[code]....

View 12 Replies View Related

C++ :: Ignoring Punctuation When Copying Cstrings

Jul 29, 2014

Now, I have an assignment in which I am to accept arguments from the command line and copy them into a cstring and display said cstring unmolested. Then I should store it into another cstring but ignore all punctuation, spaces and capital letters. Like this:

./a5 Marge lets Norah see Sharon's telegram
As is: Marge lets Norah see Sharon's telegram
---->: margeletsnorahseesharonstelegram
<----: margeletsnorahseesharonstelegram
Sequence entered is a palindrome
=======================================================

Finally I am to chaeck to see if it is a palindrome. Most of it works and if no spaces are entered nor punctuation it works. However, punctuation causes it to malfunction.

char *FormSeqProc (int argc, char *argv[], char seqAsIs[]) {
int len = 0,
n = 0;
for (int p = 1; p < argc; ++p) {
len += strlen(argv[p]);

[Code] ....

View 6 Replies View Related

C++ :: Copying A Buffer From A Specific Location

Jan 20, 2015

I already wrote:
strncpy(buff2, buff1[i], strlen(buff1)-i );

but this function seem to just copy from the beginning of a buffer to another, not from the ith element.Is there such a function?

Buff1&buff2 are char[10000] and i is declared int, holding the interesting element's position.

View 4 Replies View Related

C++ :: ERROR Copying Array - Pointers

Jan 31, 2014

I was trying to copy one array to another one of the same size, but when I execute the program all the array values that are supposed to be copied appeared to be 0 when it should be 10, what am I doing wrong?

#include <iostream>
#include <cstdlib>
using namespace std;
int a[10];
int b[10];
void print(int *, int);
void zeros (int *, int);

[Code]...

View 1 Replies View Related

C++ :: Copying Entire List To A Vector

Apr 20, 2014

is there any way to copy an entire list to a vector? would make my life much easier

View 3 Replies View Related

C++ :: Copying Binary FILE Contents Into Another

Jan 10, 2013

How does one go about copying one binary FILE variable to another in C++? Say I have the following:

FILE* tempFile; //is a binary file and assume already filled with contents
FILE* localFile;

tempFile, as the name implies, is stored in a temporary directory (AND has a randomized temp name) within Windows and I want to copy its contents to another file with a predefined name that is within a valid local directory (e.g. C:UsersuserMy Documents est.exe). What do I have to use?

View 3 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved