Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';在linux上使用流在文件中打印_C++_Linux_File_Stream - Fatal编程技术网

C++ Can';在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");

我试图从c编程代码中删除多行注释。我需要从文件中获取输入,然后获取输出。它在windows系统中运行良好。我认为问题在于Linux的文件路径。请帮帮我

#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