假设我们以下列形式获得输入文件:
12 a -5
T 23 -1 34 R K s 3 4 r
a a 34 12 -12 y
现在,我们需要阅读整个文件并打印以下内容:
number of integers
number of lowercase char
number of uppercase char
sum of all integers
这样的问题一直是我肉体的刺,我想一劳永逸地解决这个问题。
答案 0 :(得分:1)
您需要parse文件:
1)将原始文本分成tokens,然后
2)“决定”令牌是字符串,整数还是“别的东西”。
3)计算结果(#/整数,#/字符串等)
以下是一个示例:Parse A Text File In C++
以下是关于该主题的规范教科书:The Dragon Book
答案 1 :(得分:1)
基本上,您要解析命令行,打开文件,按令牌解析每个行令牌,并检查每个令牌的要求。我希望这会有所帮助。
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <stdlib.h>
using namespace std;
int main(int argc, char* argv[]) {
ifstream in(argv[1]);
string line, ch;
int int_count = 0, upper_count = 0, lower_count = 0, sum = 0;
/* Grab each line from file and place contents into line */
while(getline(in, line)) {
istringstream ss(line);
/* Parse each token in line */
while(ss >> ch) {
/* Is it a digit? */
if(isdigit(ch[0])) {
int_count++;
sum += atoi(ch.c_str());
}
/* If it's not, then it must be a char */
else {
if(isupper(ch[0]))
upper_count++;
else
lower_count++;
}
}
}
in.close();
cout << "Number of integers: " << int_count << endl;
cout << "Number of lowercase char: " << lower_count << endl;
cout << "Number of uppercase char: " << upper_count << endl;
cout << "Sum of all integers: " << sum << endl;
return 0;
}
答案 2 :(得分:0)
按空格分割
检查它是否仅包含0-9,&#39; - &#39;和&#39;。如果有的话,它可能是一个数字。如果它没有;可能是一些文字。