从文件中读取并交换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;
}
}
一种方法是阅读原始文件,替换字符,并将输出写入到一个新文件。
然后最终当你完成可能用新的覆盖旧文件。
仔细查看这段代码:
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”并输入两个变量!
我会先从相对简单的解决方案:
- 店的文件在
vector<char>
内容(注意大文件) - 遍历向量的内容,做掉
- 覆盖旧的文件与向量的内容这样的
是不是我已经做了第二我得到的功能? – Dom
是的,你有一些接近 – SundayMonday
你可以发现错误是在我的代码?因为整个晚上都在努力尝试,而且它不行,脑才不会工作。是替代()因为从来没有为我工作? – Dom
我没有这样做? – Dom
你的权利,我可以替换字符,但是当我试着写代码糟透了,生病看看它谢谢! – Dom