如何区分线段和两者之间的空格?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
前 2 个整数分别用于顶点数和边数。
第一行之后的第一个数字是源,第二个数字是目标,第三个数字是权重。
它应该做的是区分行和空格,并将整数输入到正确的数据中。所以,它应该是:
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
相关文章:
- 2D数组来自文本输入,中间有空格
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何在c++中使用system()来运行包含空格的python脚本
- basic_string的前导/尾部不区分空格的特征
- 移除前面有空格的前2个字符串
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 在字符串中插入空格
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- C++为一串单词添加空格
- 使用另一个字符串从字符串中删除空格
- 我还可以添加什么来按空格或空格正确拆分C++字符串?
- 如何打印不带空格的输入整数?
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- C++ "noskipws"没有按预期工作,如何正确允许字符串中的空格?
- 在 c++ 中逐行阅读字符串,不要以空格停止