如何检查空行

How To Check empty Lines?

本文关键字:检查 何检查      更新时间:2023-10-16

my input.txt文件:

4
4
5 0 1 2
1 4 0 0
1 1 5 4
0 6 3 2
0 4 1 2
1 7 5 0
2 3 5 6
0 6 2 2
1:0 4 2 0

我现在的程序:

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <sstream>
using namespace std;
int main()
{
ifstream File("input.txt");
string line;
string num;
string array[50];
string comma;
int i=0;
    while (getline(File,line)) {
        comma="";
        istringstream s(line);
        if (line.empty()){
            comma=",";
            s >> num ;
            array[i] =  comma;
        }
        else {
            s >> num ;
            array[i] =  num;
        }
        i++;
    }        
return 0;
}

嗯,我的程序没有给我想要的!当我打印数组[I]时,它只给我第一列中的数字!像这样:

4
,
4
,
5
3
1
7
,
0
1
2
6
,
1:0

我想做的是在有空行的地方放一个逗号,这样我就可以区分这些数字,并将它们存储在intger数组中,以便在它们之间进行数学运算

解释我的input.txt文件:

输入文件中的数字和矩阵大小可以由我更改。

4 <= #number of items 
4 <= #types of items
5 0 1 2 <= matrix #1
1 4 0 0
1 1 5 4
0 6 3 2
0 4 1 2 <= matrix #2
1 7 5 0
2 3 5 6
0 6 2 2
1:0 4 2 0 <= Available numbers for item #1 

我想:

  1. 存储变量中的项数。

  2. 将项目类型存储在变量中。

  3. 2数组中存储matrix#1matrix#2,并在矩阵#1和矩阵#2之间执行减法

这能做到吗?或者有什么更容易的方法来区分这些数字,并将它们存储在变量和数组之间?

问题很简单。

你用读取一行数据

while (getline(File,line)) {

但你只处理这行中的一个元素:

    if (line.empty()) {
        ...
        s >> num ;
        ...
    }
    else {
        s >> num ;
    }

您只需要将if ... else语句放入某种循环中。

此外,我不理解if语句的第一个分支:如果line为空,那么s中就不应该有任何内容可供读取。

所以,稍微编辑一下,这应该更接近你想要的(我还没有尝试过,看看它是否真的有效):

    ...
    while (getline(File,line)) {
        if (line.empty()) {
            array[i] = ","
            ++i;
            continue;
        }
        istringstream s(line);
        while(s >> num) {
            array[i] =  num;
            ++i;
        }
    }        
    return 0;
}