代码之家  ›  专栏  ›  技术社区  ›  oodan123

C++忽略输入的第一个单词的简单方法

  •  1
  • oodan123  · 技术社区  · 9 年前

    我正在编写一个程序,逐行读取文本文件,将行值存储在矢量中,进行一些处理,然后写回新的文本文件。文本文件通常是这样的:

    enter image description here

    如您所见,有两列:一列表示帧号,另一列表示时间。我想要的只是第二列(也就是时间)。文本文件中可能有数百行,甚至数千行。以前我一直在手动删除帧号列,但我不想这样做。所以我的问题是:有没有一种简单的方法来编辑我的当前代码,这样当我用 getline() 它跳过第一个单词而只得到第二个单词?这是我用来读取文本文件的代码。谢谢

    ifstream sysfile(sys_time_dir);
    
    //Store lines in a vector
    vector<string> sys_times;
    string textline;
    
    while (getline(sysfile, textline))
    {
        sys_times.push_back(textline);
    }
    
    2 回复  |  直到 9 年前
        1
  •  7
  •   R Sahu    9 年前

    由于每行中有两个数字,因此可以读取两个数字并忽略第一个数字。

    vector<double> sys_times;
    int first;
    double second;
    while ( sysfile >> first >> second )
    {
       sys_times.push_back(second);
    }
    
        2
  •  4
  •   Benjamin Lindley    9 年前
    std::string ignore_me;
    while (sysfile >> ignore_me, getline(sysfile, textline)) {
    ...
    

    这使用逗号运算符,读入行的第一个单词(此处将“单词”定义为非空格字符的连续序列),但忽略结果,然后使用 getline 阅读该行的其余部分。

    请注意,对于您描述的特定数据格式,我宁愿选择RSahu在其答案中显示的内容。我的回答对以下问题较为笼统: “跳过第一个单词并阅读行的其余部分” .