|
It behaves correctly but your approach is wrong.. if you want to read different tag lenghts you can do it in two ways...
1) read byte by byte untill you fully read the tag name....
2)just read first 16 bytes as you did and find out the excat length of tagname from the "tTagName" and then move the file pointer to the length+1 position (in your case DFC101 has length 6, so move the file pointer to position 7 from the begining of file)
Hope this'll help
Do your Duty and Don't expect the Result
|
|
|
|
|
How can i do like this? I dont know pls give me any sample..?
For also copy char by char..
Anu
|
|
|
|
|
Hope you are using CFile.. if so use Seek method like,
After find the length of tagname anf before reading the next time write this code,
pFile.Seek(length+1, CFile::begin);
char by char reading, is reading a single char use 1 as count in Read method
pFile.Read(buff, 1);
-- modified at 8:26 Wednesday 9th August, 2006
Do your Duty and Don't expect the Result
|
|
|
|
|
Anu_Bala wrote: I think it continously read 16 characters
Of course it is: you asked to read 16 characters, so it is logical that the function will read 16 characters.
I suggest that you store the complete line in a big buffer and 'parse' it after that. Copy char by char in the tTagName until you reach a blank space. Then start copying in the tDesc string. That's quite easy to do.
|
|
|
|
|
How can i read char by char..please give me any sample..
Anu
|
|
|
|
|
In addition to the answer from Cedric Moonen, it seems as if you can ignore lines starting with "//" since they doesn't contain useful information.
|
|
|
|
|
Take a look at scanf.
Cheers
Steen.
"Are you gonna check your makeup when you're done whining?" John Simmons, 05/31/2006
|
|
|
|
|
Anu_Bala wrote: char tTagName[16] = {0}
memset(tTagName,0,16);
What are you trying to accomplish here? One or the other is sufficient, but not both.
Use this as a starting point:
void main( void )
{
ifstream ifs("c:\\a.txt");
string sLine,
sTagName,
sDesc;
while (getline(ifs, sLine))
{
istringstream iss(sLine);
iss >> sTagName >> sDesc;
cout << sTagName << "|" << sDesc << "|" << endl;
}
}
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi
How to include files in a directory with VC 8.0? with vc 6.0 we can do it
by Selecting in tools->options->Directories,where is the option for it in vc8.0 ?
Thanx
It takes only a minute to get a crush on someone, an hour to like someone and a day to love someone - but it takes a lifetime to forget someone.
|
|
|
|
|
The included directories for all of your projects can be affected in Tools --> Options --> Project and Solutions --> VC++ Directories --> Show directories for: Include files panel.
Alternatively you can set the include directories for your particular project in Project Properties --> C/C++ --> General --> Additional Include Directories field. I think this is recommended way.
I hope this helps.
|
|
|
|
|
I would say you should use the /I compiler option in your project/solution instead of visual studio's path settings. That is the recommended way and makes sure your project/solution will compile on any machine.
|
|
|
|
|
Why is the .NET graphics in windows forms app is so slow, manualy ploting some N points line segments using double buffer takes considerable time compared to say builder compiled app?
Is there special tips to make it faster.
9ine
|
|
|
|
|
I have char buf[10];
First i declared it as char buf[10] = {0};
In the middle of my code after using that buf, I again want to make buffer to zero.
How to do that?
KIRAN PINJARLA
|
|
|
|
|
Use ZeroMemory(..) as
ZeroMemory(buf, sizeof(buf));
Do your Duty and Don't expect the Result
|
|
|
|
|
For platform independent code:
memset(buf, 0, 10);
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
better use sizeof(buf) instead of 10, it will save you some headache if someone changes the "char buf[10]" in future.
|
|
|
|
|
I was using it to illustrate the call. sizeof will work on items declared on the stack, but not the heap. So, code like char* pChar = new char[30]; cout << sizeof(pChar) << endl; will output 4 instead of 30.
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|
|
See the sample code
Example:
class MyClass
{
MyClass(int);
};
int main()
{
MyClass* p = new MyClass(10);
MyClass* p1 = new MyClass[6];
return 0;
}
how can I dynamically allocate array of objects using this class? do I need to overload operator new?
if yes how?
|
|
|
|
|
You have to supply a default constructor. From MSDN:
"No explicit per-element initialization can be done when allocating arrays using the new operator; only the default constructor, if present, is called. See Default Arguments for more information" (MSDN[^])
Cheers
Steen.
"Are you gonna check your makeup when you're done whining?" John Simmons, 05/31/2006
|
|
|
|
|
so we should have some "Set" function to do the task of parameterized constructor right?
SaRath.
"Where I am from, there is no plan B. So, take advantage of today becuase tomorrow is not promised. - 50 Cent"
My Blog | Understanding State Pattern
|
|
|
|
|
Right. If you wan't to be politically OOP correct you write accessor functions to your member variables. In this case, with the member being an int, I would just assign directly to it in a loop.
Cheers
Steen.
"Are you gonna check your makeup when you're done whining?" John Simmons, 05/31/2006
|
|
|
|
|
it would be helpful if you say how such a operation is restricted with arrays. but it can be used with single object. is it the difficulty for compiler in writing same code for more than one object? or any oothr purposeful use for that?
SaRath.
"Where I am from, there is no plan B. So, take advantage of today becuase tomorrow is not promised. - 50 Cent"
My Blog | Understanding State Pattern
|
|
|
|
|
Honestly, I have no idea why the compiler doesn't support initializing arrays of classes during construction, but according to MSDN that's just the way it is. Perhaps there's some sort of breach of the standard or a problem with the syntax. I don't know.
I don't know what's your use of this is, but maybe it will be easier for you to use an array of pointers instead of a pointer to an array. Then you can allocate and initialize each element in a loop instead.
Cheers
Steen.
"Are you gonna check your makeup when you're done whining?" John Simmons, 05/31/2006
|
|
|
|
|
This is what I just wrote on VC7.0.
#include <iostream>
class MyClass {
public:
MyClass(int a){}
MyClass(){}
};
int main() {
MyClass* p1 = new MyClass(6);
MyClass* p2 = new MyClass[6];
}
This works just fine.
-- modified at 6:50 Tuesday 15th August, 2006
Abhishek
|
|
|
|
|
The following will do what you want.
class MyClass
{
public:
MyClass(int a) : m_MyInt(a) { }
MyClass() : m_MyInt(0) { }
void SetInt(int a) { m_MyInt = a; }
private:
int m_MyInt;
};
int main()
{
MyClass* pClass1 = new MyClass(6);
MyClass* pClass2 = new MyClass[5];
for (int i = 0; i < 5; ++i)
{
pClass2[i].SetInt(i);
}
delete pClass1;
delete [] pClass2;
}
If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week
Zac
|
|
|
|