|
STL is not that hard to use, but very nice to work with, so give it a try.
If you use std::vector you can pre-allocate space (if you want) and then the allocation increases automagically whenever needed, so you need not bother about allocation.
Cheers,
Fredrik
"Felix qui potuit rerum cognoscere causas."
|
|
|
|
|
The crude way is to read the file once, to count the number of lines, possibly checking the max length of the lines, then create an array of strings, and re read the file.
If I have seen further it is by standing on the shoulders of Giants. - Isaac Newton 1676
|
|
|
|
|
Makover wrote:
I cannot use STL yet. Haven't learned it
Makover wrote:
I will have to implement them by my own
If you can make that, you sure can learn to use STL-containers in less time. The interfaces are similar to what you know already, and it is exactly what you want.
what you want semms quite simple:
Read the line into a std::string , parse that one into pieces and push_back() every piece into a std::vector < std::string > .
You then have a container that behaves quite like an array (operator[] and such).
Try it!
My opinions may have changed, but not the fact that I am right.
|
|
|
|
|
If you want to do it the MFC way you should use the CArray (index-related) or the CList (referenz-related). There are different types derived so read the MSDN carefully before coding.
I would use CStringArray.
Try this @ home. (B&B)
|
|
|
|
|
I was required to be as system independent as possible so I'm not "allowed" to use MFC.
I'll give a try to STL. Anyway I will learn later.
Thank You all (Fredrik , cedric , Ted & KarstenK) for your time and help (I love this forum )
-----------------------
But what did I do?
|
|
|
|
|
if your method works in c porting to c++ is less than simple ! change extension to c++ then check you type casts ! see errors and repair them !
but you shouldn`t see any !
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
dear all
i want to use a global variable in my mfc dialog based app.
i defined a var in stdafx.h
the code compiles but gives a linker error :- multiple instances found.
so where do i defin my global vars which could be used throughout the classes.
also can these variables be static.
regards
|
|
|
|
|
Anywhere in a *.cpp file (source file) of your project write:
unsigned int g_uiMyGlobalUnsignedIntVar;
And to use the global variable everywhere in your project add the following in the stdafx.h file:
extern unsigned int g_uiMyGlobalUnsignedIntVar;
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
thanx 4 ur reply, but i have a doubt
there r three cpp files,
one is stdafx.cpp, App.cpp, Dlg.cpp
can i define the variable in any of these files.
SHOULD I DECLARE IT outside the classes?
thanx
|
|
|
|
|
Declare it as extern in your stdafx.h and define it in your source file (.cpp).
rishabhs wrote:
can i define the variable in any of these files.
No, just in one file!
ps. try what happens if you do!
rishabhs wrote:
SHOULD I DECLARE IT outside the classes?
YES!
If you declare it inside a class it's not a global varible!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
i understand the difference between declaration and definiation of functions.
but how these are different in case of variables.
|
|
|
|
|
rishabhs wrote:
can i define the variable in any of these files.
No. Just in one file (otherwise the linker shows an error, because you use more than one variables with the same name).
rishabhs wrote:
SHOULD I DECLARE IT outside the classes?
Yes. If you declare it inside the class it's not a global variable, it's in the namespace of the class!
Daniel
---------------------------
Never change a running system!
|
|
|
|
|
You can also declare a variable inside the Main App class (CMyApp i.e.) and then use member functions on that class in order to access that var.
In order to be able to access that class you will only have to be sure that:
1. You have the header file of the CMyClass included in the .cpp or .h file in which you want to access the application.
2. declare the class as "extern CMyApp MyApp;"
after all of this you'll be able to:
MyApp.WhateverYouHaveDefinedAsPublicInYourClass...
WhateverYouHaveDefinedAsPublicInYourClass can be a function or a variable depending on your needs, in case you want to access a var, I know that it is a little bit of overhead, but it can be interesting to use SET/Get functions in order to access it, because in this way the behaviour will be controlled by a function and if sometime you need to change it you'll have to do it only in the function in your main class.
Hope this helps...
|
|
|
|
|
this response is what you don't want to hear (I know)...
Do not use globals! They are a sign for a bad design or a quick hack. Instead put data into classes and access it from there. In some cases make a member variable static... so you share one variable between all instances of a class.
See here[^] for a brief C++ tutorial.
For example declare static variable in class:
class CMyClass {
static int s_nVariable;
int GetValue() const { return s_nVariable; }
void SetValue(int nNewValue) { s_nVariable = nNewValue; }
};
and define it in CMyClass source code (in one file only!):
int CMyClass::s_nVariable = 0;
Hope I was not offtopic, Moak
|
|
|
|
|
cute :
in stdafx.h write : extern var_type var_name;
in stdafx.cpp write : var_type var_name=0;
that`s all !
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
dear all,
how can i detect a system restart using WM_QUERRYSESSION.
i'm able to differentiate between a Logoff and shutdown using the message, but no clue whatsoever of differentiating between a system shutdown and system restart.
plz. respond
regards
|
|
|
|
|
plz. don't make me feel that there is no solution to this problem
|
|
|
|
|
I'm curious as to why this matters to your application. The system is going down all the way. Why does it matter if it comes back up in a few minutes or a few days?
Regards,
Alvaro
Quitters never win. Winners never quit. But those who never win and never quit are idiots. -- despair.com
|
|
|
|
|
void OnShutDown(BOOL logOff)
{
}
BOOL OnAllowShutDown(UINT nSource, BOOL logOff)
{
return 1;
}
case WM_QUERYENDSESSION:
return OnAllowShutDown((UINT)wParam,lParam==ENDSESSION_LOGOFF);
case WM_ENDSESSION:
if((BOOL)wParam)
{
OnShutDown(lParam==ENDSESSION_LOGOFF);
}
break;
//be cool
I am the mighty keeper of the book on knowledge . Contact me to get your copy .
|
|
|
|
|
In my .h file I am declaring a CArray like so:
CArray<int,int> m_Array;
I get the following complaints from C++.NET many times over:
error C2143: syntax error : missing ';' before '<'
error C2238: unexpected token(s) preceding ';'
error C2501: 'CDerivedDialogBarView::CArray' : missing storage-class or type specifiers
I have checked around this site and others and can't seem to put this together. Surely this is a beginners mistake or something. Suggestions? TIA.
Matt (Padawan Learner)
|
|
|
|
|
i can't if you are using CArray incorrectly or if you're using the CP boards incorrectly don't take that as an insult - i'll explain:
CArray is a template class. you can't just declare a CArray, you have to declare a CArray of some object type:
#include < afxtempl.h>
CArray < myType, myType& > m_Array;
the CP comment was because CP's boards will eat < tags if you're not careful, so i couldn't tell if you had template params or if the board ate them
oh yeah, and std::vector is a better array in nearly all respects.
-c
Image tools: ThumbNailer, Bobber, TIFFAssembler
|
|
|
|
|
My bad. I was missing the #include < afxtempl.h>
Thanks. It's been a long day(or night).
|
|
|
|
|
Okey guys this is dumb!
I accidentlydeleted my MENU resources associated with my DOC/VIEW SDI application.
Now when I compile I get a pop up window saying "Failed to create empty document!"
Any idea how I can get this code to work again ????
Thanks
|
|
|
|
|
NEVER MIND GUYS ! I GOT BACK !
|
|
|
|
|
Hello,
I have an assignment to write a C function to add two IEEE754 double numbers based on an algorithm in my text book. The function adds two positive doubles via two unsigned long parameters and returns the result also in unsigned long format.
My professor gave us the main program and an empty subroutine and I need to code the subroutine.
All I am trying to do for now is print the values that are entered by the user, not do any calculations, just print them in the main and then once they get into the subroutine and I can't even get that. It's been a year and a half since I have done any c programming, but I did not expect to be stumped this quickly ...
Here is the code. I commented the lines that I added, not much. I understand the values I get when I print the HEX, but I get all zeroes when I try to print the decimal values.
Thanks for any help.
#include <stdio.h>
unsigned long adddouble(unsigned long x, unsigned long y)
{
//I added all
unsigned long result;
result = x;
//print values of x and y
printf("In subroutine, x = %f and y = %f\n", x ,y);
printf("In subroutine, return = %f\n", result);
return result;
}
int main(int argc, char* argv[])
{
double d1, d2;
double *dp;
unsigned long s;
unsigned long *longp1, *longp2;
//get two input real numbers
scanf("%lf %lf", &d1, &d2);
longp1 = (unsigned long*)&d1;
longp2 = (unsigned long*)&d2;
//I added - hex value of what longp1 and longp2 point to
printf("In main longp1 = %08x, %08x \n", *longp1, *(longp1+1));
printf("In main longp2 = %08x, %08x \n", *longp2, *(longp2+1));
//I added - decimal value of what longp1 and longp2 point to
printf("In main longp1 = %f \n", *longp1);
printf("In main longp2 = %f \n", *longp2);
s = adddouble(*longp1, *longp2);
dp = (double*)&s;
printf("%f + %f = %f\n", d1, d2, *dp);
return 0;
}
PC
|
|
|
|