【发布时间】:2015-08-14 10:10:21
【问题描述】:
我是 C++ 编程的新手,我完成了阅读文件的作业。我正在从这个cpp-tutorial: Basic-file-io 站点学习 C++。
我有一个文件,其内容如下:
Input: /path/to/the/file/
Information :xxx
Type of File: Txt file
Extra Information Value = 4
Development = 55
NId CommId
1 0
3 0
8 7
. .
And so on...
这个文件有大约10000 Nodes 和它们对应的CommID。 Node and CommId 在此文件中由 TAb space 分隔。我正在使用以下代码将此文件作为输入读取:
ifstream commFile("CommTest.txt");
if (!commFile)
{
// Print an error and exit
cerr << "Uh oh, CommunityTest File could not be opened for reading!" << endl;
exit(1);
}
while(commFile)
{
// read communityFile from the 6th Line
string strLine;
getline(commFile, strLine);
cout << strLine << endl;
}
我有两个问题:
- 我想从第 7 行开始读取,即 1 0 等等。
- 如何从第 7 行开始阅读?
我检查了很多问题,发现如果txt文件的行长度不同,则无法跳转到行号。
我想知道如何使用 seekg,我需要在到达第 7 行之前计算位数。
Please let me know, how to do it?
我想在两个单独的整数中获取节点和 CommId。一旦我有一个整数中的节点,我想从图形文件中搜索这个节点的邻居节点(这个文件也作为输入提供,它有边信息)。获得该节点的邻居后,我想存储收集到的邻居及其 CommId(每个节点的 commId 都可以从上面的文件中获得)。我想将它们成对存储在数组/向量中。
例如:
从此文件中读取 1 0 后。我将使用节点 1 并将 从图形文件中找到节点 1 的邻居。对于每一个邻居 节点 1,我想将信息保存为一对。例如,如果 节点 1 有两个邻居节点。即节点 63 和节点 55。如果节点 63 属于 commId 100,节点 55 属于 CommId 101,这对 应该是:
[(63,100),(55,101)..] 等等。
学习链接,STackOverflow 论坛建议我使用 Vectors,Map, STructs for Graphs。我以前从未使用过 Vector/Maps、Structs。我知道 Array,因为我以前使用过它。
请建议最好的方法。
提前致谢。我们将不胜感激任何帮助。
【问题讨论】:
-
您在循环中放置了一个计数器并跳过处理读取的行,直到计数器达到 7?
标签: c++ file c++11 graph stdvector