【发布时间】:2014-11-05 21:00:25
【问题描述】:
我附上了可以打开.txt 文件的程序的完整源代码。它不会在cout << length 之后执行。我正在尝试使用数组将.txt 文件信息存储在内存中。
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
char filename[128];
char file[10][250];
int count;
int length;
string line;
int main ()
{
int count = 0;
int length = 0;
cout << "Filename: ";
cin.clear();
cin.getline(filename, sizeof(filename));
string new_inputfile(filename);
ifstream inputfiles (new_inputfile.c_str());
if(!inputfiles.is_open())
{
cout << "File could not be opened. \n ";
}
else
{
for (int i=0; getline(inputfiles,line); i++)
{
length++;
}
cout << length;
// char file[length][250]; <- How can I create the array based on the length variable?
// CODE DOES NOT EXECUTE AFTER THIS.
while(!inputfiles.eof() && (count<10))
{
inputfiles.getline(file[count],250);
count++;
}
for(int i=0; i < count; i++)
{
cout << file[i] << endl;
}
}
inputfiles.close();
return 0;
}
另外,由于file[] 是字符,例如file[1] 包含字符Name=Mike,我如何剥离= 之前的所有内容。我只想要Mike。我知道string,我可以使用substr()方法,但我不知道char。
【问题讨论】:
-
为什么不直接用
getline(cin, new_inputfile);,跳过中间人? -
文件不是
char,而是char array大不同。 -
@NeilKirk 你是什么意思?我应该把
getline(cin, new_inputfile)放在哪里? -
你有
string new_inputfile; getline(cin, new_inputfile);而不是cin.getline(filename, sizeof(filename)); string new_inputfile(filename); -
@NeilKirk 谢谢。我如何存储线路?我听说你可以在没有数组的情况下做到这一点。就像我的
txt文件中的第一行是Name=Mike,我想将我的名称变量设置为Mike。我的第二行是Age=10,我想将我的年龄变量设置为10