Here is the code I have so far.
这是我到目前为止的代码。
What I need to do is read from two different text files, Matrix A and Matrix B.
我需要做的是从两个不同的文本文件,矩阵A和矩阵B中读取。
I can do this however for each text file matrix I read it only comes up with
我可以这样做但是对于我读过的每个文本文件矩阵,它只能得到它
1 0 0
(so basically the first line) where the whole text file for Matrix A is in fact
(所以基本上是第一行)其中矩阵A的整个文本文件实际上是
1 0 0
2 0 0
3 0 0
so does anybody know how I can do this?
那么有谁知道我怎么做到这一点?
Thanks!
#include <iostream> //declaring variables
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;
string code(string& line);
int main()
{
ofstream outf;
ifstream myfile;
string infile;
string line;
string outfile;
cout << "Please enter an input file (A.txt) for Matrix A or (B.txt) for Matrix B" << endl;
cin >> infile; //prompts user for input file
if (infile == "A.txt")
{ //read whats in it and write to screen
myfile.open("A.txt");
cout << endl;
getline (myfile, line);
cout << line << endl;
}
else
if (infile == "B.txt")
{
myfile.open("B.txt");
cout << endl;
getline (myfile, line);
cout << line << endl;
}
else
{
cout << "Unable to open file." << endl;
}
//{
//while("Choose next operation");
//}
return 0;
}
3 个解决方案
#1
9
Well, getline
obviously gets one line.
好吧,getline明显得到一条线。
You should read line by line until the end of file, and you can achieve that with, for example:
您应该逐行阅读,直到文件结束,您可以使用,例如:
while (getline(myfile, line))
out << line << endl;
This means: while there is a line to get from myfile, write that line to the output stream.
这意味着:虽然有一行从myfile获取,但将该行写入输出流。
#2
2
You are reading only once, so this is not a miracle. You will need to use a while or for loop for continous reading. You would be writing something like this:
你只读一次,所以这不是一个奇迹。您需要使用while或for循环来连续阅读。你会写这样的东西:
while (getline (myfile, line))
cout << line << endl;
This would be the whole code to write:
这将是要编写的整个代码:
#include <iostream> //declaring variables
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;
string code(string& line);
int main()
{
ofstream outf;
ifstream myfile;
string infile;
string line;
string outfile;
cout << "Please enter an input file (A.txt) for Matrix A or (B.txt) for Matrix B" << endl;
cin >> infile; //prompts user for input file
if (infile == "A.txt")
{ //read whats in it and write to screen
myfile.open("A.txt");
cout << endl;
while (getline (myfile, line))
cout << line << endl;
}
else
if (infile == "B.txt")
{
myfile.open("B.txt");
cout << endl;
while (getline (myfile, line))
cout << line << endl;
}
else
{
cout << "Unable to open file." << endl;
}
//{
//while("Choose next operation");
//}
return 0;
}
#3
0
Using getline
is the easiest way:
使用getline是最简单的方法:
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
void read_file_line_by_line(){
ifstream file;
string line;
file.open("path_to_file");
while (getline (file, line))
cout << line << endl;
}
int main(){
read_file_line_by_line();
return 0;
}
#1
9
Well, getline
obviously gets one line.
好吧,getline明显得到一条线。
You should read line by line until the end of file, and you can achieve that with, for example:
您应该逐行阅读,直到文件结束,您可以使用,例如:
while (getline(myfile, line))
out << line << endl;
This means: while there is a line to get from myfile, write that line to the output stream.
这意味着:虽然有一行从myfile获取,但将该行写入输出流。
#2
2
You are reading only once, so this is not a miracle. You will need to use a while or for loop for continous reading. You would be writing something like this:
你只读一次,所以这不是一个奇迹。您需要使用while或for循环来连续阅读。你会写这样的东西:
while (getline (myfile, line))
cout << line << endl;
This would be the whole code to write:
这将是要编写的整个代码:
#include <iostream> //declaring variables
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;
string code(string& line);
int main()
{
ofstream outf;
ifstream myfile;
string infile;
string line;
string outfile;
cout << "Please enter an input file (A.txt) for Matrix A or (B.txt) for Matrix B" << endl;
cin >> infile; //prompts user for input file
if (infile == "A.txt")
{ //read whats in it and write to screen
myfile.open("A.txt");
cout << endl;
while (getline (myfile, line))
cout << line << endl;
}
else
if (infile == "B.txt")
{
myfile.open("B.txt");
cout << endl;
while (getline (myfile, line))
cout << line << endl;
}
else
{
cout << "Unable to open file." << endl;
}
//{
//while("Choose next operation");
//}
return 0;
}
#3
0
Using getline
is the easiest way:
使用getline是最简单的方法:
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
void read_file_line_by_line(){
ifstream file;
string line;
file.open("path_to_file");
while (getline (file, line))
cout << line << endl;
}
int main(){
read_file_line_by_line();
return 0;
}