From: June Lee on
is it true that Standard C++ Library is pretty much include functions
similar to the following java packages???

java.io
java.lang
java.util

http://msdn2.microsoft.com/en-us/library/ct1as7hw(VS.80).aspx

It seem to me the Standard C++ Library have headers to mainipulate
string / characters, doing I/O, and data structure like Stack, Queue,
HashMap, Vector, time, bitwise operation, exception, iterator on a
collection ... etc

which pretty similar to above "very core" java package
From: June Lee on
So there are 3 types of library / header in C++?

CRT (C runtime library)
Standard C++ Library
Platform SDK for Visual C++

where CRT is low level code like doing all the bit and bytes
where Platform SDK is high level code doing all those Web Service,
Security, Message Queue, UI / GUI, COM, HTTP / networking stuff?

any other must have / used alot kind of library for C++ that
programmer use alot besides the above 3 library?
From: Nathan Mates on
In article <pin5v3dcv2n72i59v8ldhphlg4i44ju7k5(a)4ax.com>,
June Lee <iiuu66(a)yahoo.com> wrote:
>So there are 3 types of library / header in C++?

Why does it matter to you? C/C++ is not Java. Trying to map things
will be inexact at best. Use of pretty much any library beyond the C
Runtime is *optional*. The classic 'Hello, World' uses only that.
Every other library is completely up to the user. Code running on
Windows will tend to use the Platform SDK. But, think about it -- C++
can be used on a Mac, no? Or unix, no? The "platform SDK" is quite
different, and usually called something else there.

C/C++ deliberately put very little in the core C Runtime. C++'s
Standard Template Libraries also has huge areas it doesn't cover --
things like graphics, sound, networking, and a *LOT* more. Multiple
libraries exist to fill in those gaps. Many of those libraries overlap
in functionality and features. It's a choice which one(s) to use, it's
not part of the language .

Nathan Mates

--
<*> Nathan Mates - personal webpage http://www.visi.com/~nathan/
# Programmer at Pandemic Studios -- http://www.pandemicstudios.com/
# NOT speaking for Pandemic Studios. "Care not what the neighbors
# think. What are the facts, and to how many decimal places?" -R.A. Heinlein
From: Joseph M. Newcomer on
So what do java.io, java.lang, and java.util implement? I haven't looked a Java in at
least five years!

Note that if you are programming in MFC, you should completely ignore the existence of
std::string and use the MFC CString class (the functionality is essentially identical, but
CString Plays Well With MFC). Bitwise operation is bitwise operation in any language,
unless you want bit arrays longer than 64 bits, in which case you can ideally implement
everything you need it about ten minutes.

As to comparing any of the collection manipulation in C++ to Java, you'd have to ask a
Java expert.
joe

On Tue, 01 Apr 2008 17:50:06 -0700, June Lee <iiuu66(a)yahoo.com> wrote:

>is it true that Standard C++ Library is pretty much include functions
>similar to the following java packages???
>
>java.io
>java.lang
>java.util
>
>http://msdn2.microsoft.com/en-us/library/ct1as7hw(VS.80).aspx
>
>It seem to me the Standard C++ Library have headers to mainipulate
>string / characters, doing I/O, and data structure like Stack, Queue,
>HashMap, Vector, time, bitwise operation, exception, iterator on a
>collection ... etc
>
>which pretty similar to above "very core" java package
Joseph M. Newcomer [MVP]
email: newcomer(a)flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
From: Joseph M. Newcomer on
There is precisely one type of header in C++: the header file. What goes in a header file
is up to the implementor of the header file.

C++ header files have more powerful syntax than pure C header files because C++ is a more
powerful language. But the underlying mechanism is the same, and any C header file is
implicitly a C++ header file.

The CRT consists of a set of header files that name the functions of the C Runtime
Library.

The Standard C++ Library consists of a set of header files that name the classes and
methods of the Standard C++ Library

The Platform SDK has nothing to do with C++, and is just a set of header files that name C
functions which are part of the Platform SDK.

The Microsoft Foundation Class libraries consist of a set of header files that name the
classes and methods of MFC, a library system certain kinds of applications (primarily
GUI-based applications) written in C++

The Active Template Libraries (ATL) consist of a set of header files that name the classes
and methods of ATL, a library system largely intended to develop controls written in C++.

The DirectX Libraries consist of a set of header files that name the classes and methods
of DirectX, which allows high-performance access to concepts like graphics, 3D rendering,
game input devices, sound input, and sound output, among other capabilities.

The GDI+ Libraries consist of a set of header files that name the classes and methods of
GDI+, an enhanced version of GDI.

The WinSock Libraries are a set of header files that give you access to the low-level
WinSock interface (you probably want to use a high-level socket library like CAsyncSocket
in MFC)

The WinINet libraries are a set of header files that give you access to the high-level
network protocols, such as HTTP transfers, SSL, and things like that.

The Microsoft Message Queue Libraries give you access to the Microsoft Message Queue
mechanisms (which have nothing to do with, say, queuing Window messages, or queuing
messages to I/O Completion Ports, or queueing messages to sockets, or use the C++ Standard
Library queue objects)

ISAPI is a set of libraries that allow you to construct Web Services. It has (thankfully)
been supplanted by .NET Web Services libraries.

There's a set of .NET libraries that allow you to write .NET code (such as Web services)
in C++, using extended syntax of the Microsoft C++ compiler, but that's yet a different
set of libraries.

At this point, I've covered perhaps half the libraries. I didn't go into the assorted
ways of getting at SQL databases, for example, or a ton of other things that are
supported. Also, charactertizing the Platform SDK as being "high level" is problematic;
for example, MFC provides much higher-level interfaces for many concepts that the Platform
SDK is merely low-level support for.

The Joe Newcomer Libraries consist of the set of header files that name classes and
functions I wrote.

The June Lee Libraries consist of the set of header files that name classes and functions
you wrote.

Note that there is NOTHING SPECIAL ABOUT ANY OF THESE HEADER FILES. For convenience, we
label them as groups of concepts, so we can talk about them, but they are just a bunch of
header files the compiller reads. It doesn't care.

All you need to care about is (a) what do I want to do and (b) which of the many options
is the best choice to do it. Generally, for most programming, the C++ Standard Library is
an important set of header files to know about. For GUI programming (at least in this
newsgroup), the MFC header files are important to know about. For control development,
the ATL header files are important to know about. For serious graphics, you probably want
to know about either GDI+ or Direct3D. If you want to get close to the operating system,
you often need to know a lot of the Platform SDK support. And so on. (By the way, the
last I looked, there was nothing BUT low-level support for security; there is no
high-level concepts of security that I've seen recently)

For example, I could not program effectively without my set of libraries. I have several
hundred thousand lines of C++/MFC code I wrote (some of which is on my Web site), and they
are as essential to me as MFC or the CRT.

Note that most of the Standard C++ Library files at some point include CRT libraries. Go
read any one of them, and you'll almost certainly find #includes of CRT libraries. Most
MFC libraries include the CRT headers. My libraries #include the MFC libraries. So
trying to draw arbitrary boundaries is not a particularly productive exercise.

And thinking there are only 3 kinds of headers is not a good approach to even analyzing
the fundamental problem. The fundamental problem is that any large environment has
hundreds of header files you need a passing acquaintance with. This is impossible, so you
pick and choose your targets based on opportunity. I once knew a subset of C# quite well,
for example, but haven't used it in a couple years. Trying to lump everything into a
couple overly-simplistic categories will only lead to confusion and frustration. Pick a
task and learn the subset you need to accomplish that task. Then choose a slightly larger
scope of task and extend the subset you know.

You might take a look at the C#/MFC conversion chart I made, and if you are a Java
programmer, you will probably want to think of developing a Java/C++/MFC chart of your own
to help you. See my MVP Tips site.

joe

On Tue, 01 Apr 2008 18:16:17 -0700, June Lee <iiuu66(a)yahoo.com> wrote:

>So there are 3 types of library / header in C++?
>
>CRT (C runtime library)
>Standard C++ Library
>Platform SDK for Visual C++
>
>where CRT is low level code like doing all the bit and bytes
>where Platform SDK is high level code doing all those Web Service,
>Security, Message Queue, UI / GUI, COM, HTTP / networking stuff?
>
>any other must have / used alot kind of library for C++ that
>programmer use alot besides the above 3 library?
Joseph M. Newcomer [MVP]
email: newcomer(a)flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
Author of "Win32 Programming" (with Brent Rector, Addison-Wesley, 1997)
Author of "Developing Windows NT Device Drivers" (with Ed Dekker, AWL, 1999)