忽略空白字符
Ignoring Whitespace characters
我正在使用getline从一个看起来像的输入数据文件中抓取行
1 9
5 5
6 7
...
其中第一个数字是某人的兄弟姐妹数量,第二个数字是某个人的年龄。
const int MAXLINE=50;
int main(int argc, char *argv[]) {
int numberOfSiblings;
int age;
char oneline[MAXLINE];
ifstream inputData;
inputData.open(argv[1]);
while ( !(inputData.eof()) ) {
inputData.getline(oneline, MAXLINE);
numberOfSiblings = oneline[0] - '0';
age = oneline[2]-'0';
}
}
然而,由于空白,我不能假设这些int总是在同一索引处。
因为如果有两个空格,而不是一个年龄,现在将在索引3中。我该怎么解释?
另外,如果我有一个两位数的数字,会发生什么?
让标准流为您做这件事:
inputData >> numberOfSiblings >> age;
std::istream已经有operator>>
可以跳过任何前导空格,然后为您读取一个int。这似乎是你需要的,所以我就用它。
如果我这样做,我会从一个表示一个人数据的结构开始:
struct data {
int num_siblings;
int age;
};
然后我会写一个函数来读取其中一项:
std::istream &operator>>(std::istream &is, data &d) {
return is >> d.num_siblings >> d.age;
}
这样,您就可以使用operator>>
:从流中读取data
项目
std::ifstream input("people.txt");
data person;
input >> person;
有很多不错的答案。
但是,我认为如果你想使用&学习C++、
你最好使用'<lt;'或'>>'来帮助您完成工作
在回答中,他们使用了覆盖运算符,您可以从HERE|| HERE学习。
相关文章:
- 字符指针值为空白,为什么代码不打印5
- 将utf8编码的字符串转换为本地8位编码的字符串,并将无法确定的字符替换为空白
- 读取空白*指向字符作为整数的安全性
- C和C++中反斜杠后面的空白字符
- 检查字符中的空白和字符串中的数字
- 将空白字符替换为 %20 的字符串,忽略所有尾随空格
- 如何在C++中一起使用setw和setfill来填充空白和字符
- 读取字符数组的空白位数
- 忽略空白字符
- 在空白字符上拆分 UTF-8 编码字符串,而无需了解 UTF-8 编码
- 需要读取空白和其他字符C++
- 从字符数组中删除空白和标点符号的函数
- PDCurses空白字符
- 如何从字符变量中删除空白空间
- 如何读取名称的字符数组,而不读取空白
- 将二维字符数组初始化为全空白时出现问题
- 将文本文件的内容一个字符一个字符地读入矢量,不跳过空白或新行
- 为什么我用WriteFile写入文件的每个字符之间都有一个空白
- 在调用函数c++之后,用另一个字符替换空白
- 程序来查找空白和换行字符的数量