C++ Can';在linux上使用流在文件中打印
我试图从c编程代码中删除多行注释。我需要从文件中获取输入,然后获取输出。它在windows系统中运行良好。我认为问题在于Linux的文件路径。请帮帮我C++ Can';在linux上使用流在文件中打印,c++,linux,file,stream,C++,Linux,File,Stream,我试图从c编程代码中删除多行注释。我需要从文件中获取输入,然后获取输出。它在windows系统中运行良好。我认为问题在于Linux的文件路径。请帮帮我 #include <iostream> #include<fstream> #include<string.h> #include<ctype.h> using namespace std; int main() { ifstream readfile("read.txt");
#include <iostream>
#include<fstream>
#include<string.h>
#include<ctype.h>
using namespace std;
int main()
{
ifstream readfile("read.txt");
ofstream writefile ("write.txt");
string oneline;
int mark=0;
if(readfile.is_open())
{
while(getline(readfile,oneline))
{
int length=oneline.length()+1;
char* newoneline=new char[length];
strcpy(newoneline,oneline.c_str());
for(int i=0;i<length;i++)
{
if(newoneline[i]=='/'&& newoneline[i+1]=='/')
{
break;
}
if(newoneline[i]=='/'&& newoneline[i+1]=='*')
{
mark=1;
}
else if(newoneline[i]=='*'&& newoneline[i+1]=='/')
{
mark=0;
break;
}
if(mark==0)
{
writefile<<newoneline[i];
}
}
writefile<<"\n";
}
}
return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
ifstream readfile(“read.txt”);
流写入文件(“write.txt”);
字符串单线;
整数分=0;
if(readfile.is_open())
{
while(getline(readfile,oneline))
{
int length=oneline.length()+1;
char*newoneline=新字符[长度];
strcpy(newoneline,oneline.c_str());
对于(int i=0;i我不知道为什么要分配动态数组?可以通过以下方式轻松使用类字符串查找操作:
ifstream readfile("read.txt");
ofstream writefile("write.txt");
string oneline;
int mark = 0;
if (readfile.is_open())
{
while (getline(readfile, oneline))
{
for (std::size_t i{}, length{oneline.length()}; length > 1 && i != length - 1; i++)
{
if (oneline.at(i) == '/' && oneline.at(i + 1) == '/')
break;
else
if (oneline.at(i) == '/' && oneline.at(i + 1) == '*')
mark = 1;
else
if (oneline.at(i) == '*' && oneline.at(i + 1) == '/')
{
mark = 0;
break;
}
if (mark == 0)
writefile << oneline.at(i);
}
writefile << std::endl;
}
}
ifstream读取文件(“read.txt”);
流写入文件(“write.txt”);
字符串单线;
整数分=0;
if(readfile.is_open())
{
while(getline(readfile,oneline))
{
对于(std::size_t i{},length{oneline.length()};length>1&&i!=length-1;i++)
{
如果(一线.at(i)='/'&&一线.at(i+1)='/')
打破
其他的
如果(一线.at(i)='/'&&一线.at(i+1)='*')
分数=1;
其他的
如果(一线.at(i)='*'&&一线.at(i+1)='/'))
{
分数=0;
打破
}
如果(标记==0)
writefile为什么不使用std::string::find(“/”)
直接在字符串中搜索?请注意,应该为每一新行初始化mark=0