如何查看空行?

时间:2015-12-12 20:17:58

标签: c++ arrays matrix ifstream

我的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个数组中存储矩阵#1 矩阵#2 并执行减法矩阵#1和矩阵#2之间。

  4. 可以这样做吗?或者有没有更简单的方法来区分这些数字并将它们存储在变量和数组之间?

1 个答案:

答案 0 :(得分:0)

问题很简单。

您使用

读取了一行数据
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;
}