【问题标题】:How To Check empty Lines?如何检查空行?
【发布时间】:2016-03-18 14:31:05
【问题描述】:

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

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

【问题讨论】:

  • 您的输入行能否以\r\n 结尾(即Windows 行结尾)?
  • 你说它没有给你你想要的,但你没有说它正在给你什么。我怀疑问题是你永远不会清除comma,所以一旦设置好,你最终会在后面的所有行(是否为空)后面加上一个逗号。如果这是您的问题,请将else { comma = "" } 添加到您的if 语句中。如果没有,那么您需要在问题中添加详细信息。
  • @clcto 很抱歉没有很好地解决我的问题,我已经编辑了我的帖子希望你现在更清楚?
  • 感谢您提供更多信息。

标签: c++ arrays matrix ifstream


【解决方案1】:

问题很简单。

你读取一行数据

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;
}

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多