我正在尝试编写一个程序: - 读取文本文件,然后将其放入字符串中 - 通过减去4来改变字符串中的每个字母 - 输出更改的行
我理解如何输入/输出文件。我没有比这更多的代码,而是因为这对我来说是一个非常新的概念。我研究过,找不到直接的答案。如何将原始文件的每一行输入字符串然后进行修改?
谢谢!
// Lab 10
// programmed by Elijah
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
fstream dataFile;
//Set the file "coded" as the line input
dataFile.open("coded.txt", ios::in);
//Create the file "plain2" as program output
dataFile.open("plain2.txt", ios::out);
}
答案 0 :(得分:1)
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream inFile ("coded.txt"); //explicitly input using ifstream rather than fstream
ofstream outFile ("plain2.txt"); //explicitly output using ofstream rather than fstream
string str = "";
char ch;
while (inFile.get(ch))
{
if (ch!='\n' && ch!=' ')
{
//do your manipulation stuff //manipulate the string one character at a time as the characters are added
}str.push_back(ch); //treat the string as an array or vector and use push_back(ch) to append ch to str
}
}
这更明确地打开输入和输出文件流,然后创建一个空字符串和单元化字符。 inFile.get(ch)
只要不在文件的末尾就会返回true,并将下一个字符分配给ch
。然后在循环内部,您可以执行ch
所需的任何操作。我只是将它附加到字符串上,但听起来你想在追加之前做一些事情。
在您的情况下,get(ch)将优于getline()或&gt;&gt;方法,因为get(ch)还将添加空格和制表符以及作为getline()和&gt;&gt;的文件一部分的其他特殊字符。会忽略。
如果字符串为4,则表示您可以使用的操作行中的字符数少于4:
ch = ch-4;
请注意,如果ch最初是'a','b','c'或'd',这可能会产生与预期不同的结果。如果你想环绕使用ascii操作和模运算符(%)。
答案 1 :(得分:0)
您正在覆盖您的dataFile,因此您必须先创建第二个fstream
或先处理字符串,然后再使用相同的fstream
进行输出。
字符串阅读:
http://www.cplusplus.com/reference/string/string/getline/
字符串修改:
http://www.cplusplus.com/reference/string/string/replace/
你是什么意思&#34;字符串 - 4&#34;?