我是c ++的新手,我的程序的某个特定部分有问题。由于没有人真正帮助我,我敢在这里问。如果文本文件包含此行“hELp mE”,则应在同一文本文件中将其重写/覆盖为“HelP Me”。我所知道的是,我可能需要使用ofstream
进行覆盖,但我对它应该如何完成感到非常困惑。我已经尝试了大约2个小时而且失败了。这是我完成的一半代码,只能从文件中读取。
int main()
{
string sentence;
ifstream firstfile;
firstfile.open("alu.txt");
while(getline(firstfile,sentence))
{
cout<<sentence<<endl;
for(int i=0;sentence[i] !='\0';i++)
{
if((sentence[i] >='a' && sentence[i] <='z') || (sentence[i] >='A' && sentence[i] <='Z'))
{
if(isupper(sentence[i]))
sentence[i]=tolower(sentence[i]);
else if(islower(sentence[i]))
sentence[i]=toupper(sentence[i]);
}
}
}
return 0;
}
答案 0 :(得分:1)
这很好用:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
string sentence;
ifstream firstfile;
firstfile.open("alu.txt");
while(getline(firstfile,sentence))
{
cout<<sentence<<endl;
for(int i=0; sentence[i] !='\0'; i++)
{
if((sentence[i] >='a' && sentence[i] <='z') || (sentence[i] >='A' && sentence[i] <='Z'))
{
if(isupper(sentence[i]))
sentence[i]=tolower(sentence[i]);
else if(islower(sentence[i]))
sentence[i]=toupper(sentence[i]);
}
}
}
firstfile.close();
cout<<sentence<<endl;
ofstream myfile;
myfile.open ("alu.txt");
myfile<<sentence;
myfile.close();
return 0;
}
根据您的代码,我只需close()
您的阅读模式并打开open()
模式&amp;拿sentence
此链接可能对您有所帮助Input/output with files in C++
答案 1 :(得分:0)
按照@πάνταῥεῖ解决方案,您可以使用ifstream
读取特定文件中的内容,然后判断并更改每个字符的UPPER / lower。最后,使用ofstream
覆盖原始文件。
答案 2 :(得分:0)
您可以使用fstream在C ++中进行就地重写。这将逐字符替换所有小写字母,反之亦然。
#include <iostream>
#include <fstream>
#include <locale>
int main()
{
std::locale loc;
std::fstream s("a.txt");
char next;
int pos = 0;
while((next = s.peek()) != EOF) {
if(islower(next,loc))
next = toupper(next,loc);
else if(isupper(next,loc))
next = tolower(next,loc);
s.seekp(pos);
s.write(&next,1);
pos++;
}
return 0;
}