|
Use std::map::lower_bound . For example, the program below gives you a pair of iterators defining the range containing keys starting with 'A':
#include <string>
#include <map>
#include <iostream>
int main(int, char**)
{
std::map<std::string, int> a;
a.insert(std::make_pair("Apple", 1));
a.insert(std::make_pair("Banana", 1));
a.insert(std::make_pair("Pear", 1));
a.insert(std::make_pair("Apricot", 1));
a.insert(std::make_pair("Plum", 1));
std::map<std::string, int>::const_iterator low = a.lower_bound("A");
std::map<std::string, int>::const_iterator hi = a.lower_bound("B");
for(std::map<std::string, int>::const_iterator it=low;it!=hi;++it)
{
std::cout << it->first << std::endl;
}
}
Note that the sample key for the second lower_bound call is just the key you're looking for with the last character incremented by one.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
Thank you, this is what i was looking for
Bekir.
|
|
|
|
|
Doesn't this require the elements to be sorted?
|
|
|
|
|
It's a std::map - by definition, it's sorted.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
You are right. maps do it.
|
|
|
|
|
i need from vc++ program get a list of dll (there are in one folder, "plugins"), from choosen dll get a list functions and run them. it's deficult? write some code to do it
modified on Wednesday, April 8, 2009 3:04 AM
|
|
|
|
|
In general, I'd look for a known set of functions, rather than trying to get a list of functions in the DLL - after all, you need to know how to call the functions, if they're plug-ins?
So - the first task is to design your plug-in interface so it's generic enough to do what you want.
Once you've done that, it's relatively easy to iterate through the files in a directory (look at the FindFirstFile[^] documentation), see if they're DLLs (LoadLibrary[^]) and see if they have the function you want (GetProcAddress[^]).
Now, if you really want to list the functions exported by a DLL, you need to read the internal structure[^] of a DLL, to get its export table. There's a short program to illustrate that here[^] - look for the last post on the page.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
|
No you are wrong. It's called "CodeProject".
|
|
|
|
|
XDDDD good one
Regards.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
Rating helpfull answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
No. You are an absolute idiot if you think anybody here is going to give up their time in order to do your project for free. If you want the project, then pay for it. On another website. Stop posting ridiculous queries which drown out the legitimate, intelligent questions which have been posted
|
|
|
|
|
hai i need a complete code for our project .. interactive voice response system using vc++(MFC) .. please help me
|
|
|
|
|
Sure, would you like some tea with it ?
|
|
|
|
|
OK, seriously though: Read the guidelines and edit your post to have more information and make sure your query is specific, at least to some degree.
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
Hello All ,
My following Code is in cpp and use COM interfaces, My complile and build with 0 errors and 0 warnings .But at run it gives exception .In code line
hr=serviceManager->AddScanPackageService(BSTR("Offline SyncService"),BSTR("c:\\wsusscan.cab"),0,&service);
when this line exicute value of hr is E_INVALIDARG.
plz help my code is as folloing .
/////////////////////////////////////////////////////////////////////
{
IUpdateSession * session = 0;
IUpdateServiceManager * serviceManager = 0;
IUpdateService * service = 0;
IUpdateSearcher * searcher = 0;
ISearchResult * searchResult = 0;
IUpdateCollection *collection=0;
IUpdate *update=0;
HRESULT hr;
CoInitialize(NULL);
hr = CoCreateInstance(CLSID_UpdateServiceManager, 0, CLSCTX_ALL,
IID_IUpdateServiceManager,(LPVOID *)&serviceManager);
hr=CoCreateInstance(CLSID_UpdateSession,0,CLSCTX_ALL,IID_IUpdateSession,
(LPVOID *)&session);
////////////////////////////////////////////
hr=serviceManager->AddScanPackageService(BSTR("Offline Sync Service"),BSTR("c:\\wsusscan.cab"),0,&service);
//////////////////////////////////////////////////////////
hr=session->CreateUpdateSearcher(&searcher);
ServerSelection ss={ ssOthers } ;
BSTR str=0;
hr=searcher->put_ServerSelection(ss);
hr=service->get_ServiceID(&str);
hr=searcher->put_ServiceID(str);
hr=searcher->Search(L"IsInstalled=0",&searchResult );
hr=searchResult->get_Updates(&collection);
LONG count;
hr=collection->get_Count(&count);
for(LONG i=0;i<count;i++)
{
collection->get_Item(i,&update);
update->get_Title(&str);
printf("%s",(char *)str);
}
}
///////////////////////////////////////////////////////////////////////
Thanks for reading this
question/ replying answer.
|
|
|
|
|
I suspect your problem is that you can't just create BSTR s by casting normal strings to BSTR .
You need to a) use SysAllocString[^] to create the BSTR, b) convert the string from ASCII to OLE format (personally, I'd use the ATL conversion functions[^] as they're dead easy to use) and c) use SysFreeString[^] to release the string once you've finished with it.
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
|
Hi,
I need to design an application accessing database system.
I need to design it like a server/mutiple client model in c++.
Can i get any article dealing with the database client/server model.
Thanks
|
|
|
|
|
krishnan.s wrote: Can i get any article dealing with the database client/server model.
Here's one[^].
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
hi all,
I had to include dll with my exe, but my problem is if i keep those dll in my install folder than my project does not work fine. To remove this i have put those dll in new folder inside my installed folder but now my project is not loading those dlls and showing warning
warning LNK4199: /DELAYLOAD:...\test_Folder\abc.dll ignored; no imports found from ...\test_Folder\abc.dll
|
|
|
|
|
You can use SetDllDirectory API to add the new folder to the DLL search path.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
where i can use this?
To accomplish great things, we must not only act, but also dream;
not only plan, but also believe.
|
|
|
|
|
Call this when your EXE is initializing.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|
|
I have dialog based application
PLease can u explain me with example.
thanks.
To accomplish great things, we must not only act, but also dream;
not only plan, but also believe.
|
|
|
|
|
I'm assuming you are loading the DLL using LoadLibrary .
So, before calling LoadLibrary , you must call SetDllDirectory("...\\test_folder") where the parameter is the path of the folder where you have put your DLLs.
«_Superman_»
I love work. It gives me something to do between weekends.
|
|
|
|