繁体   English   中英

如何区分线段和线段之间的空格? C ++

[英]How do I distinguish both line segments and spaces in between? C++

我正在尝试从.txt文件中为使用C ++创建边缘邻接列表的程序引入数据,但是它并没有达到我想要的方式。 我对ifstream >>函数的分隔符不了解。

我知道ifstream >>会忽略线段并读取下一个值,但是我不确定它是否也忽略空格。

int numVert;
int numEdge;

int src, dest, weight;

ifstream myFile("Ginput.txt");
myFile >> numVert;
myFile >> numEdge;

graph = createGraph(numVert);

for (int i = 0; i <= numEdge*3; i++)
{
    myFile >> src;
    myFile >> dest;
    myFile >> weight;
    addEdge(graph, src, dest, weight);
}

.txt文件格式如下:

3 6
1 4 2
2 4 6
2 3 2
1 2 3
2 5 6
2 1 5
1 4 3

前两个整数分别表示顶点数和边数。

第一行之后的第一位是来源,第二位是目的地,第三位是重量。

它应该做的是区分行和空格,并将整数输入正确的数据。 因此,应为:

numVert = 3;
numEdge = 6;
First line: src = 1, dest = 4, weight = 2
Second line: src = 2, dest = 4, weight = 6

等等。

请帮帮我。 谢谢。

要为operator>>激活跳过空格,您将插入:

myFile >> std::skipws;

但这是默认启用的。 那么std::skipws现在跳过什么呢? 答案是对std::isspace正确的任何东西,包括换行符'\\n'和空格' '这意味着您不必在这两者之间进行区分。

您的程序中有一个错误,即您填充了3个输入,但是循环i < numEdge*3 ,这导致填充了numEdge*9输出,这太多了。

您使用了非mcve语句,例如graph = createGraph(numVert); addEdge(graph, src, dest, weight); 所以我从代码中排除了那些。 您也不应该use namespace std;

#include <iostream>
#include <fstream>

int main() {
    int numVert;
    int numEdge;

    int src, dest, weight;

    std::ifstream myFile("Ginput.txt");
    myFile >> numVert;
    myFile >> numEdge;

    myFile >> std::skipws;

    std::cout << "numVert = " << numVert << '\n';
    std::cout << "numEdge = " << numEdge << '\n';

    //graph = createGraph(numVert);

    for (int i = 0; i <= numEdge; i++){
        myFile >> src;
        myFile >> dest;
        myFile >> weight;
        std::cout << "line " << i + 1 << " : src = " << src << ", dest = " << dest << ", weight = " << weight << '\n';

        //addEdge(graph, src, dest, weight);
    }
}

输出:

numVert = 3
numEdge = 6
line 1 : src = 1, dest = 4, weight = 2
line 2 : src = 2, dest = 4, weight = 6
line 3 : src = 2, dest = 3, weight = 2
line 4 : src = 1, dest = 2, weight = 3
line 5 : src = 2, dest = 5, weight = 6
line 6 : src = 2, dest = 1, weight = 5
line 7 : src = 1, dest = 4, weight = 3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM