此文件从AD.txt中读取一些数据,将其存储到字符串中,并将字符串写入ADsubjects.txt。我的写函数似乎工作正常,但我的读不被调用。它甚至没有进入read函数来打印cout
语句。我假设如果我只是简单地放置调用函数,它应该自动出现。这是我的代码:
#include <iostream>
#include<fstream>
#include <string.h>
#include<iomanip>
#include <cstdlib>
#define rmax 15
using namespace std;
string data1;
阅读功能:
void readSubjects(){
cout<<"inside read"<<endl;
ifstream is;
is.open("AD.txt"); //opening the file
cout<<"open text"<<endl;
while(!is.eof()){
char line[rmax];
cout<<line<<endl;
data1 += "\"";
is.getline(line,rmax);
for(int i=0; i<11;i++){
data1 += line[i];
}
data1 += "\" \\ ";
}
is.close();
}
写功能:
void writeSubjects(){
ofstream os;
os.open("ADsubjects.txt",ios::out);
os<<data1;
os.close()
}
主要功能:
int main() {
readSubjects();
cout<<"read"<<endl;
writeSubjects();
cout<<"written"<<endl;
cout << "Hello, World!" << endl;
return 0;
}
答案 0 :(得分:1)
在此代码中;有很多问题。
os.close()
中的编译问题 - 缺少分号
cout<<line<<endl;
之后的 char line[rmax];
代码错误,因为它未初始化。打印未初始化的变量可能会弄乱您的终端。
实际上,readline正确读取了该行。为什么使用for循环将11个字符从行复制到data1?示例中允许的最大长度为15。您可以按如下方式进行操作。
data1 += line;
以下代码可以使用。
void readSubjects(){
cout<<"inside read"<<endl;
ifstream is;
is.open("AD.txt"); //opening the file
cout<<"open text"<<endl;
while(!is.eof()){
char line[rmax];
// cout<<line<<endl; // This is wrong
data1 += "\"";
is.getline(line,rmax);
// for(int i=0; i<11;i++){
// data1 += line[i];
// }
data1 += line;
data1 += "\" \\ ";
}
is.close();
}
答案 1 :(得分:0)
在读取的while循环中,您需要做的只是:
while(is){ //the is will run until it hits the end of file.
//code here
}
如果readSubjects()根本没有被调用,那么函数原型可能需要在int main()上面声明,而实际的函数声明应该在int main()下面声明,如下所示: / p>
void readSubjects();
int main(){
readsubjects();
//more code...
}
void readSubjects()
{
//actual function code
}