Re: std::ifstream
- From: David Wilkinson <no-reply@xxxxxxxxxxxx>
- Date: Thu, 19 Jun 2008 09:51:21 -0400
Fil wrote:
Hi,
I am learing C++ with Thinking in C++ (Bruce Eckel) and we've done some exercises on ifstream in the past chapter.
If I pass to my ifstream object a constant filePath (as we did in he book) it works, but it doesn't as soon as I pass it a variable.
I have got one error araising from linesCount.cpp, line 6.
main.cpp
-------------------------------------------------------------------------------------
#include "linesCount.h"
int main()
{
return linesCount("C:\\TICPP-2nd-ed-Vol-one\\html\\Frames.html");
}
-------------------------------------------------------------------------------------
linesCount.h
-------------------------------------------------------------------------------------
#include <string>
int linesCount(std::string filePath);
-------------------------------------------------------------------------------------
linesCount.cpp
-------------------------------------------------------------------------------------
#include <string>
#include <fstream>
int linesCount(std::string filePath)
{
std::ifstream inFile(filePath);
std::string line;
int count(0);
while (std::getline(inFile,line))
{
count++;
}
return count;
}
-------------------------------------------------------------------------------------
The error message is:
linescount.cpp(6) : error C2664: 'std::basic_ifstream<_Elem,_Traits>::basic_ifstream(const char *,std::ios_base::openmode,int)' : cannot convert parameter 1 from 'std::string' to 'const char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Fil:
You have to use c_str() member to get const char* from a string;
int linesCount(const std::string& filePath)
{
std::ifstream inFile(filePath.c_str());
std::string line;
int count(0);
while (std::getline(inFile,line))
{
count++;
}
return count;
}
Note that you should pass the string by const reference here, to avoid unnecessary copy.
--
David Wilkinson
Visual C++ MVP
.
- Follow-Ups:
- Re: std::ifstream
- From: Fil
- Re: std::ifstream
- References:
- std::ifstream
- From: Fil
- std::ifstream
- Prev by Date: "Planning to isolate some interfaces of my application to a separate dll" Suggest solutions
- Next by Date: Re: /clr:safe
- Previous by thread: std::ifstream
- Next by thread: Re: std::ifstream
- Index(es):
Relevant Pages
|