|
|
hey toxcct somebody had voted you '1'.. i swear its not me!!
0x0400:
"But your mind is very complex, very tricky. It makes simple things complicated. -- that's its work. And for centuries it has been trained for only one thing: to make things so complicated that your life becomes impossible."- Osho
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[V]--
|
|
|
|
|
these days, whatever i write, either serious post or joking is poluating my ranking by voting me down.
seriously, what's wrong with my 2 posts here ?
this starts making me very angry, and i'll tell about it to Chris, because the only thing i "won" since the 3 days i'm back is about 9 votes to '1' when i consider my answers weren't provocating anyone !!!
tell me vivek, you saw i was voted to '1', and you tell you sware it's not you, so i conclude you don't agree with this vote. so, why didn't you counter balance the vote ? humm ?
anyway, Chris will be knowing this during the day, know it everybody !
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
|
|
|
|
|
oh my dear.. i'm extremly sorry, i assure you whenever i find you with a '1', i'll give you my 5. ok?? and moreover, most of the time you deserved my 5 coz your replies had helped me a lot. the same '1' issue i had also noticed in aloks post. somebody kept on giving him a '1'.i've been dumb not counter balancing it. dont worry toxcct..i'll do it.. ok? be happy dude
0x0400:
"But your mind is very complex, very tricky. It makes simple things complicated. -- that's its work. And for centuries it has been trained for only one thing: to make things so complicated that your life becomes impossible."- Osho
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[V]--
|
|
|
|
|
you're very nice vivek, thanks to you.
however, i emmit an objection. there's no need to vote me '5' each time i've got a '1', otherwise, ,the voting system has no sense. i'm only angry to get these votes when i don't desrve them...
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
|
|
|
|
|
No toxct i just noticed your msg history, someone's giving you '1' deliberately. i'll do my best against it
0x0400:
"But your mind is very complex, very tricky. It makes simple things complicated. -- that's its work. And for centuries it has been trained for only one thing: to make things so complicated that your life becomes impossible."- Osho
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[V]--
|
|
|
|
|
toxcct bTW i dont understand, why selected to reply for my post. i just meant "toxcct is not there in the forum for the moment".. you get me?? "if he is there he'd had have answered you with the best answer" you get it now?? i dont find any reason for putting the "unwell" icon on me
0x0400:
"But your mind is very complex, very tricky. It makes simple things complicated. -- that's its work. And for centuries it has been trained for only one thing: to make things so complicated that your life becomes impossible."- Osho
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[V]--
|
|
|
|
|
humm, that was with a good intention, i wanted to throw a tongue, but yes, i conceed the rest of the face is not willing. i should have put a instead, but i found it not being exact to my feeling at the moment (but don't worry, the is not how i wanted to show me neither...)
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
|
|
|
|
|
yes of course...
did you have a look at this ? (*joke*)
seriously, why don't you want to use the standard library ?
if you want to perform the calculation by yourself, you'll have to use assembler for this i believe...
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VisualCalc 3.0]
|
|
|
|
|
How do i define a space for unknown char size?
i dont want to use like char str[50] or char str=new char(100);
size should be infinite and adjust accordingly. if i enter "hi" , it should be of two only bytes.
i'm trying winsock a program, so if the user should be allowed to enter any number of characters. so how??
regards,
Rookie
Installing MFC...2% complete
|
|
|
|
|
How about Link list
typedef struct list<br />
{<br />
char c;<br />
list *p;<br />
};
never say die
|
|
|
|
|
Use a std::vector of chars
#include <vector>
typedef std::vector<char> TCharArray;
TCharArray myChars;
int anysizeyoulike = 42;
myChars.resize( anysizeyoulike );
you can then work with myChars as if it were a regular array
myChars[10] = 'a';
(just remember to resize it again if you want it to be a different size, as bad things will happen if you go off the end of your buffer!)
--
Help me! I'm turning into a grapefruit!
Buzzwords!
-- modified at 9:24 Wednesday 11th January, 2006
|
|
|
|
|
Nice, but i want the size to be based on the number of characters the user enters.
how to get it?
myChars.resize( anysizeyoulike );// anysizeyoulike should be differing based on the No. of char. the user is entering. getchar() will be of any use?
regards,
Rookie
Installing MFC...2% complete
|
|
|
|
|
If you're getting characters from the keyboard then try something like:
#include <vector>
typedef std::vector<char> TCharArray;
TCharArray myChars;
while( char ch=getchar() )
{
myChars.push_bach(ch);
}
myChars.size() will tell you how many chars you've got
--
Help me! I'm turning into a grapefruit!
Buzzwords!
|
|
|
|
|
if you need to tell the "anysize", why not this work?
do
{
//enter anysize;
anysize =4; //user entered
char *str= new char(anysize);
}while
0x0400:
"But your mind is very complex, very tricky. It makes simple things complicated. -- that's its work. And for centuries it has been trained for only one thing: to make things so complicated that your life becomes impossible."- Osho
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[V]--
|
|
|
|
|
That's where you should use a string wrapper like the MFC/ATL CString or C++ std::string.
Regards,
Nish
|
|
|
|
|
Use string or MFC CString.
Using them would help you in all of this:-
1) Don't have to bother about freeing memory after usage.
2) Potential crashes by working directly with pointers and possible
buffer overflows.
Both of them become issues when you write a program which would grow into several 1000 lines of code and ultimately end up in ugly event of crashes
on customer machines.
As part of coding style, make them part of your company or personal coding
practice and follow them from the day one you start working on a project.
If not followed you would endup in unmaintainable code, with memory
allocations at one place and deallocation a mile away.memory leaks and troubles which could be avoided at first place. That's were c++ comes to
your rescue, use them to the fullest wherever you can.
Vipin - MVP
|
|
|
|
|
You're asking one of two things:
Q1) how do I create an adjustable-length string to read data into?
A - use something like std::vector instead
Q2) how do I read in an arbitrary length of user data and minimise the amount of temporary storage required?
A - basically, if you don't know in advance how much data there will be, you can only make an educated guess, then shorten the string to the correct size at the end.
To keep things to an *absolute minimum*, you read a character at a time and resize and copy the string each new character. However, this is theoretical - it would be dog slow and would probably fragment memory hideously for long message.
A common solution is to start off with a buffer (use a std::vector again) and read as many bytes in a chunk from your socket as it would take to fill this. If you've finished reading, stop and shorten your vector.
If there's more text, increase the length of the string and read more. You could increase by the same amount (so your string lengths are N, 2N, 3N etc) or double it each time (giving lengths of N, 2N, 4N etc), or any other method.
What you want to do is minimise the amount of memory copying and number of socket reads.
Hope that helps (homework? )
Kev
|
|
|
|
|
I totally agree. Nevertheless, I wrote EXACTLY what he wanted (and I hope it works, I didnt test it)
I love buffered streams...
Cheers,
Sebastian
--
Contra vim mortem non est medicamen in hortem.
|
|
|
|
|
hmm?
<br />
char inChar[2] = {0,0};<br />
char* pTemp = 0;<br />
char* pText = 0;<br />
int length = 2;<br />
<br />
inChar[0] = fgetc(stdin);<br />
<br />
pText = (char*)malloc(sizeof(char)*length);<br />
strcpy(pText,&inChar[0]);<br />
inChar[0] = fgetc(stdin);<br />
<br />
while((int)inChar[0] != 10)<br />
{<br />
length++;<br />
pTemp = pText;<br />
pText = (char*)malloc(sizeof(char)*length);<br />
strcpy(pText,pTemp);<br />
pText[length-2] = inChar[0];<br />
pText[length-1] = 0;<br />
free(pTemp); <br />
inChar[0] = fgetc(stdin);<br />
}<br />
free(pText);<br />
Its optimizable. But I didnt have time to optimize the first step out
Cheers,
Sebastian
--
Contra vim mortem non est medicamen in hortem.
|
|
|
|
|
not fully structured.. i typed just like that...
typedef struct node
{
char chr;
int index;
struct node* nChr;
}chatSet_t;
char *makeString(struct node* Start,int size)
{
int j=0;
struct node* newStr =Start;
char *myString =new char(size);
while(j<size)
{
myString[j]=newStr->chr;
newStr=newStr->nChr;
j++;
}
myString[size]='\0';
return(&myString[0]);
}
int main(int argc, char* argv[])
{
char *actualString;
struct node* head = new (node);
struct node* newString = new (node);
int i=0;
head=newString;
char x;
do
{
x = getchar();
newString->chr =x;
newString->index =i;
newString->nChr =new(node);
newString=newString->nChr;
i++;
}while(x!=10);
actualString = makeString(head,i);
printf("\n%s",actualString);
getch();
return 0;
}
i did it.. but just not error proof
0x0400:
"But your mind is very complex, very tricky. It makes simple things complicated. -- that's its work. And for centuries it has been trained for only one thing: to make things so complicated that your life becomes impossible."- Osho
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[V]--
|
|
|
|
|
Hello,
I don't know why nobody give the answer: std::istringstream . This class is designed to build strings of unknown length by appending segments to the buffer (stream) just like you would use std::cout . The code would look like:
std::istringstream istrInputString;
char cBuf[100] = {0};
while(
{
istrInputString << cBuf;
}
See MSDN[^] for more details.
Hope this helps.
Behind every great black man...
... is the police. - Conspiracy brother
Blog[^]
|
|
|
|
|
But you will need to make sure cBuf is null terminated. Using std::vector with push_back or append will work better.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Hello,
Since he indicated that he was using normal characters, there is no need to use vectors as this complicates the matter of displaying strings.
Behind every great black man...
... is the police. - Conspiracy brother
Blog[^]
|
|
|
|
|
I have to agree with vipinasda here. Use CString (MFC) or std::string (STL) and save yourself a lot of hastles. My preference is to use STL where possible.
Steve
|
|
|
|