在程序中,我希望逐行从文本文件中读取文本,从每行中提取数据。文本文件中的每一行都包含一个字母,如“A”后跟冒号“:”后跟一个整数,如“2”。应该在数据中读取的程序中的函数当前如下所示:
void readFile()
{
std::ifstream aFile;
std::string alldata;
std::string letter;
aFile.open("KeyPopularity.txt");
while (std::getline(aFile, alldata))
{
letter = alldata[0];
for (int i = 0; i < keyboardKeys.size(); i++)
{
if (keyboardKeys[i].character==letter)
{
keyboardKeys[i].noOfPresses = int(alldata[2]);
}
std::cout << letter << " ";
std::cout << int(alldata[2]) << "\n";
}
}
aFile.clear();
}
然而,位置0处的alldata变量(alldata [0])而不是仅列出单个字符,即字母在字母之前列出诸如87之类的数字。 87 W而不仅仅是W.问题是为什么会发生这种情况并且有一种方法可以逐行从文本文件中的每一行中提取数据,以获得行字符串位置0处的字母和位置处的数字2行的字符串?
答案 0 :(得分:1)
程序中的一些观察/错误:
您可以像这样重写代码:
void readFile()
{
std::ifstream aFile;
std::string alldata;
char letter;
aFile.open("KeyPopularity.txt");
while (std::getline(aFile, alldata))
{
letter = alldata[0];
for (int i = 0; i < keyboardKeys.size(); i++)
{
if (keyboardKeys[i].character == letter)
{
keyboardKeys[i].noOfPresses = alldata[2] - '0';
}
std::cout << letter << " ";
std::cout << alldata[2] - '0' << "\n";
}
}
aFile.clear();
}