Re: help old VBasic programmer with simple file read , Please :)
marks542004@yahoo.com wrote:
Hi all ,
I am an old programmer now hobbyist who has used cobol, basic, and
RPG .
I am new to c++ but have Microsoft Visual Studio 6.0.
That compiler is very out-dated. It was released before C++ was
standardized.
I have a program in Basic that reads a file , looks for lines
containing a specific string , and lists them.
I am trying to do the same thing in C in a search for speed with very
large files.
I have a program working until I try testing for the substring.
heres the code I have:
// stimquick.cpp : Defines the entry point for the console
application.
//
#include "stdafx.h"
Even through its name starts with "std", it is a non-standard header. It's
not needed for your program.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
char str[] = "Geom";
int main(int argc, char* argv[])
{
string line;
char *pdest;
ifstream myfile ("C:\\Documents and Settings\\Owner\\My Documents\
\downloads\\stimuli\\stimV4wall2.pz2");
if (myfile.is_open())
{
while (! myfile.eof() )
This loop is incorrect. See question 15.5 in the "C++ FAQ lite".
{
getline (myfile,line);
pdest = strstr( line, str );
Why aren't you using std::string::find?
if( pdest != NULL )
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
When you stop laughing :) can anyone tell me WHY I get an error about
not being able to convert between types in the strstr step.
Because strstr expects a pointer to const char, but you gave it an object of
class std::string.
I suspect I am using the wrong project type as well for what I
eventually want to do.
Either use line.c_str() as first argument to strstr or use something like
line.find(str) instead of strstr.