如何使用<iostream>库在c ++中打开工作目录外的文件?

时间:2016-04-16 15:27:50

标签: c++

我试图在Windows中创建自己的cmd。我需要一个我不熟悉的fstream库的替代品。我听说过iostream ibrary的文件输入/输出,如果有这样的东西你能告诉我一个例子吗?我在Code :: Blocks:

中也遇到了这段代码的错误
  

60:没有函数匹配来调用std :: basic_ifstream&lt; char&gt; :: open(std :: __ cx :: string&amp;)

这是我的代码:

#include <iostream>
#include <windows.h>
#include <stdlib.h>
#include <fstream>
#include <conio.h>

void processor_xH(std::string);
void motherboard_xH(std::string);
void prccept(std::string);
void o_app(std::string);
//Contains global variables and functions
std::string command;

int main()
{
//Check whether the system("") command is availible or exit...
if(system(NULL)) std::cout << "Ok..." << std::endl;
else std::cout << "Sorry, an error occured..." << std::endl;
//Now set the color settings and output directory
system("CLS"); system("COLOR 50");
std::cout << "@jedaiCoder $go-do- ";
//Take command as input string
std::getline(std::cin, command);
processor_xH(command);
//Check for specific commands in string
getchar(); return 0;
}

void processor_xH(std::string input)
{
std::string srchI[]={"prccept", "o-app"};
for(int x=0; x<=1; x++)
{
    if((input.find(srchI[x]))!=std::string::npos)
    {
        //Then find the command
        motherboard_xH(srchI[x]);
    }
}
}

void motherboard_xH(std::string x)
{
   if(x=="prccept") prccept(x);//Command for printing file or text
   if(x=="o-app") o_app(x); //Open file for reading writing
}

void prccept(std::string x)
{

}

void o_app(std::string x)//Guys the error is over here
{
std::string y=x.substr(7, 8);
x=x.substr(9, 12);
if(y=="-w" || y=="-r")
{
    std::ifstream file;
    file.open(x);
}
}

这个项目也可能包含其他一些错误,所以请指出它们。

另请原谅我使用系统(&#34;&#34;)命令,因为我是初学者,我知道SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 5|BACKGROUND RED)但我想为整个程序设置背景颜色。

1 个答案:

答案 0 :(得分:1)

您可能正在使用不喜欢open(std::string&)的旧编译器。

请改为尝试:

file.open(x.c_str());

还考虑通过引用传递字符串。如果您不更改字符串,请通过常量引用传递。如果您喜欢使用参数值的副本,请在函数中使用其他变量并为其指定参数的副本。

BTW,for循环的习语是:

for (index = 0; index < quantity; ++index)

因此,如果有两个字符串,则该语句变为:

for(int x=0; x < 2; x++)