从文件中读取并交换C++中的某个字符

问题描述:

在此函数中,我需要替换输入文件中的所有字符,例如输入另一个字符,例如a。一个i。我已经给了它两个镜头,但是因为我是新手,现在想我的大脑甚至不能提供任何建议?从文件中读取并交换C++中的某个字符

void swapping_letter() 
{ 
ifstream inFile("decrypted.txt"); 

char a; 
char b; 
string line; 

if (inFile.is_open()) 
{ 
    while (!inFile.eof()) 
    { 
     getline(inFile,line); 
    } 

    cout<<"What is the letter you want to replace?"<<endl; 
    cin>>a;    
    cout<<"What is the letter you want to replace it with?"<<endl; 
    cin>>b; 

    replace(line.begin(),line.end(),a,b); 


      inFile<<line 


    inFile.close(); 

} 
else 
{ 
    cout<<"Please run the decrypt."<<endl; 
} 
} 

或:

void swapping_letter() 
{ 
ifstream inFile("decrypted.txt"); 

char a; 
char b; 

if (inFile.is_open()) 
{ 
    const char EOL = '\n';           
    const char SPACE = ' '; 

    cout<<"What is the letter you want to replace?"<<endl; 
    cin>>a;    
    cout<<"What is the letter you want to replace it with?"<<endl; 
    cin>>b; 

    vector<char> fileChars;          
    while (inFile.good())            
    { 
     char c; 
     inFile.get(c); 
     if (c != EOL && c != SPACE)        
     { 
      fileChars.push_back(c); 
     } 


     replace(fileChars.begin(),fileChars.end(),a,b); 

     for(int i = 0; i < fileChars.size(); i++) 
     { 
      inFile<<fileChars[i]; 
     } 
    } 
} 
else 
{ 
    cout<<"Please run the decrypt."<<endl; 
} 
} 

一种方法是阅读原始文件,替换字符,并将输出写入到一个新文件。

然后最终当你完成可能用新的覆盖旧文件。

+0

我没有这样做? – Dom

+0

你的权利,我可以替换字符,但是当我试着写代码糟透了,生病看看它谢谢! – Dom

仔细查看这段代码:

cout<<"What is the letter you want to replace?"<<endl; 
cin>>a;    
cout<<"What is the letter you want to replace it with?"<<endl; 
cin>>b; 

它读取字符,不能多不能少。如果你点击“一个输入”,你会没事的,输入将会是未读的,但这不会造成任何伤害 - 它会将“a”和“b”读入两个变量。但是如果你点击“输入b输入”,它会读取“a”并输入两个变量!

+0

真的吗?没有看到这之前抱歉我不能看到,但我怎么解决这个问题? – Dom

+0

只需输入“a b enter”而不是“a enter b enter”。或者改变你的代码来读取行而不是字符。 –

+0

我在代码中的第二次镜头使用线代替,你呢?我看不出如何用b代替一个值。或者我在棒的错误末端? – Dom

我会先从相对简单的解决方案:

  1. 店的文件在vector<char>内容(注意大文件)
  2. 遍历向量的内容,做掉
  3. 覆盖旧的文件与向量的内容这样的
+0

是不是我已经做了第二我得到的功能? – Dom

+0

是的,你有一些接近 – SundayMonday

+0

你可以发现错误是在我的代码?因为整个晚上都在努力尝试,而且它不行,脑才不会工作。是替代()因为从来没有为我工作? – Dom