有一个文件的内容形式如下:序列号(整形) 时间(长整形) 节点1(字符串) 节点2(字符串)  文件路径(字符串)  内容(字符串)例如
1 0 NODE1 NODE2 C:\HELLO this is test
2 900 NODE3 NODE1 D:\ONLY send char
……定义如下变量 int number;
long clockt;
string node1;
string node2;
string filepath;
string str;
[/code首先先存储第一行,运算后的结果是
[code=C/C++]
number = 1;
clockt = 0;
node1 = "NODE1";
node2 = "NODE2";
filepath = "C:\HELLO";
str = "this is test";
第二行与此类似
请问如何实现这样的功能??

解决方案 »

  1.   

    你这个格式就不是很严格。文件名就可能存在空格,那么和后面的String,从哪里分隔啊?
      

  2.   

    #include <fstream>
    #include <string>
    #include <iostream>
    #include <vector>
    using namespace std;void main()
    {
    ifstream fin("c:\\array.txt");
    if(fin == NULL)
    return;
    string str;
    vector<string> v_str;
    while(getline(fin, str))
    {
    string strfind(" ");
    string::size_type pos = 0;
    string::size_type pos1 = 0;
    while( (pos = str.find_first_not_of(str, pos)) != string::npos)
    {
    pos1 = str.find_first_of(str, pos);
    string temp = str.substr(pos, pos1 - pos);
    v_str.push_back(temp);
    pos = pos1;
    }
    }
    int number;
    long clockt;
    string node1;
    string node2;
    string filepath;
    string str1;
    vector<string>::size_type i = 0;
    while(i < v_str.size())
    {
    if(i + 5 < v_str.size())
    {
    number = atoi(v_str[i++].c_str());
    clockt = atol(v_str[i++].c_str());
    node1 = v_str[i++];
    node2 = v_str[i++];
    filepath = v_str[i++];
    str1 = v_str[i++];
    }
    else
    break;
    }
    }
      

  3.   

    把你的数据保存成xml文件,可以很容易的读取!!!
    而且层次清晰!!不容易出错!!
      

  4.   

    XML:CMarkUp,找一下这个类。挺好用
    或者可以尝尝鲜,用google公布的所谓内部数据语言,号称解析速度比XML快100倍的Protocol Buffers。