我正在尝试将字符串从main传递给另一个函数.此字符串是需要加密的文本文件的名称.据我所知,我正在传递字符串,但是当我尝试使用ifstream.open(textFileName)它时,它并没有完全奏效.但是当我手动硬编码时ifstream.open("foo.txt"),它工作得很好.我需要多次使用此函数,所以我希望能够传入一个文本文件名字符串..
这是我的主要内容
#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;
}
Run Code Online (Sandbox Code Playgroud)
DataReader的标头
#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);
Run Code Online (Sandbox Code Playgroud)
最后是DataReader.cpp
#include "DataReader.h"
using namespace std;
vector<Data*> DataReader(string textFile)
{
ifstream aStream;
aStream.open(textFile); //line 11
Run Code Online (Sandbox Code Playgroud)
我查找了ifstream.open(),它接受一个字符串和一个模式作为参数.不确定如何处理这些模式,但我尝试了它们但是它们给出了相同的错误信息
DataReader.cpp: In function 'std::vector<Data*, std::allocator<Data*> > DataReader(std::string)':
DataReader.cpp:11: error: …Run Code Online (Sandbox Code Playgroud) 我正在上课,我需要为Linux编写一些C++应用程序.我真的非常不喜欢Linux下的开发工具,但我喜欢VS2010.
是否有任何类型的编译器开关可以在VC++中强制ANSI或gcc兼容?或者我可以将编译器换成gcc并仍然使用VS环境吗?