我试图在Windows中创建自己的cmd。我需要一个我不熟悉的fstream库的替代品。我听说过iostream ibrary的文件输入/输出,如果有这样的东西你能告诉我一个例子吗?我在Code :: Blocks:
中也遇到了这段代码的错误60:没有函数匹配来调用std :: basic_ifstream< char> :: open(std :: __ cx :: string&)
这是我的代码:
#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)
但我想为整个程序设置背景颜色。
答案 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++)