저는 main에서 다른 함수로 문자열을 전달하려고합니다. 이 문자열은 oepened해야하는 텍스트 파일의 이름입니다. 내가 볼 수있는 한, 문자열을 괜찮게 전달하고 있지만, ifstream.open(textFileName)
을 사용하려고하면 제대로 작동하지 않습니다. 하지만 난 수동으로 ifstream.open("foo.txt")
로 하드 코드, 잘 작동합니다. 내가 텍스트 파일 이름의 문자열에 통과 할 수 있도록하고 싶습니다 그래서 C++ : 텍스트 파일 이름에 문자열을 전달하는 ifstream 문제가 열려 있습니다.
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#ifndef DATA_H
#define DATA_H
#include "Data.h"
#endif
using namespace std;
vector<Data*> DataReader(string textFile);
DataReader를
의 내 주요
#ifndef DATA_H
#define DATA_H
#include "Data.h"
#endif
#ifndef DATAREADER_H
#define DATAREADER_H
#include "DataReader.h"
#endif
using namespace std;
int main()
{
vector<Data*> database = DataReader("foo.txt");
return 0;
}
헤더입니다 ..이 기능을 여러 번 사용해야합니다
최종적 DataReader.cpp
#include "DataReader.h"
using namespace std;
vector<Data*> DataReader(string textFile)
{
ifstream aStream;
aStream.open(textFile); //line 11
가 나는 ifstream.open을 보였다()과는 소요 문자열 및 모드를 매개 변수로 사용합니다. 모드로 무엇을해야할지 모르겠지만 시도했지만 동일한 오류 메시지가 표시됩니다.
DataReader.cpp: In function 'std::vector<Data*, std::allocator<Data*> > DataReader(std::string)':
DataReader.cpp:11: error: no matching function for call to 'std::basic_ifstream<char, std::char_traits<char> >::open(std::string&)'
/usr/local/lib/gcc/sparc-sun-solaris2.9/4.0.3/../../../../include/c++/4.0.3/fstream:495: note: candidates are: void std::basic_ifstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
입력/제안 사항에 대해 미리 감사드립니다. 딘
포함 경비원을 경비하기위한 헤더 안쪽에 넣으면 인생에서 더 큰 성공을 거둘 수 있습니다. 헤더를 포함하는 것은'#include' 라인과 같이 간단해야하며, 조건부로 4 라인을 포함하지 않아야합니다. 여기서 각 헤더의 가드 심볼의 이름을 알아야합니다. 각 헤더의 처음 두 줄은'# ifndef' /'# define'이고 마지막 줄은'#endif'입니다. 당신은 * 모든 * 헤더에서 이것의 예를 찾을 수 있어야합니다. –