我正在尝试定义一个函数,该函数将打开一个数字文本文件并一直阅读它。当函数读取每一行时,它应该将该行作为字符串读取,然后通过条件将 +1 加到每个计数器上,以获取 FIRST 索引点中不同的可能数字(即值 0)。
这是一个示例文本文件:
1245
64356
345
12
863
我的程序应该输出如下内容:
1: 2
2: 0
3: 1
4: 0
5: 0
6: 1
7: 0
8: 1
9: 0
我想我坚持让文本文件行成为>>
一个字符串变量,然后将该字符串与一个字符/字符串值进行比较。我尝试使用 while 循环(!filename.good)
,但切换到for
循环以使其正常工作。
这是我的代码如下 - 任何帮助或建设性的批评将不胜感激。
void analyzeData(std::string filename)
{
// declare the local filestreams i will be using in the function.
std::ifstream any_file_from_Main;
// assign actual file data to local filestreams
any_file_from_Main.open(filename.c_str());
//conditional to check if files opened, output error if they dont
if (!any_file_from_Main.good())
{
std::cout << "File did not open correctly." << std::endl;
exit(-1);
}
double sum;
std::size_t first_digit = 0;
//declare all counter variables
double one;
double two;
double three;
double four;
double five;
double six;
double seven;
double eight;
double nine;
//input the first line into string first_digit
any_file_from_Main >> first_digit;
//continue this loop while the file is not at the end
for (int i = 0; !any_file_from_Main.eof(); sum++)
{
if (first_digit[i] == "1") {
one++;
} else if (first_digit[i] == "2") {
two++;
} else if (first_digit[i] == "3") {
three++;
} else if (first_digit[i] == "4") {
four++;
} else if (first_digit[i] == "5") {
two++;
} else if (first_digit[i] == "6") {
six++;
} else if (first_digit[i] == "7") {
seven++;
} else if (first_digit[i] == "8") {
eight++;
} else if (first_digit[i] == "9") {
nine++;
}
// advances text file to next line and assigns value
// to string first_digit
any_file_from_Main >> first_digit;
}
// cout value of counter ints and percentages
}