使用 getline 从文本文件创建 2 个并行字符串数组
Create 2 parallel string arrays from text file using getline
为此任务,我打开一个文本文件并尝试将第 1 行和第 3 行读入名为 front 的数组(分别位于索引 0 和 1 处),然后将第 2 行和第 4 行读入名为 back 的数组(分别在索引 0 和 1 处),但它并没有完全做到这一点。没有任何内容输入数组,我的循环逻辑必须关闭。我想按原样阅读每一行(包括空格)直到换行符。感谢任何帮助。
void initialize(string front[], string back[], ifstream &inFile)
{
string fileName = "DevDeck.txt"; //Filename
string line;
inFile.open(fileName); //Open filename
if (!inFile)
{
cout << "Couldn't open the file" << endl;
exit(1);
}
//Create the parallel arrays
while (!inFile.eof())
{
for (int index = 0; index < 4; index++)
{
getline(inFile, line);
front[index] = line; //Store in first array
getline(inFile, line);
back[index] = line; //Store in second array
}
}
}
你的循环 for (int index = 0; index < 4; index++)
有错误的条件,因为你总共需要 4 个字符串,但在每个循环中你得到 2 个,所以现在你会得到 8 个字符串。
我试过 运行 你的代码有这样的改变:
int main()
{
string front[2];
string back[2];
ifstream inFile;
initialize(front, back, inFile);
cout << front[0] << endl << back[0] << endl << front[1] << endl << back[1];
return 0;
}
对我来说效果很好。它显示:
line1
line2
line3
line4
为了进一步帮助您,您应该提供 DevDeck.txt
文件和调用此函数的代码段。
为此任务,我打开一个文本文件并尝试将第 1 行和第 3 行读入名为 front 的数组(分别位于索引 0 和 1 处),然后将第 2 行和第 4 行读入名为 back 的数组(分别在索引 0 和 1 处),但它并没有完全做到这一点。没有任何内容输入数组,我的循环逻辑必须关闭。我想按原样阅读每一行(包括空格)直到换行符。感谢任何帮助。
void initialize(string front[], string back[], ifstream &inFile)
{
string fileName = "DevDeck.txt"; //Filename
string line;
inFile.open(fileName); //Open filename
if (!inFile)
{
cout << "Couldn't open the file" << endl;
exit(1);
}
//Create the parallel arrays
while (!inFile.eof())
{
for (int index = 0; index < 4; index++)
{
getline(inFile, line);
front[index] = line; //Store in first array
getline(inFile, line);
back[index] = line; //Store in second array
}
}
}
你的循环 for (int index = 0; index < 4; index++)
有错误的条件,因为你总共需要 4 个字符串,但在每个循环中你得到 2 个,所以现在你会得到 8 个字符串。
我试过 运行 你的代码有这样的改变:
int main()
{
string front[2];
string back[2];
ifstream inFile;
initialize(front, back, inFile);
cout << front[0] << endl << back[0] << endl << front[1] << endl << back[1];
return 0;
}
对我来说效果很好。它显示:
line1
line2
line3
line4
为了进一步帮助您,您应该提供 DevDeck.txt
文件和调用此函数的代码段。