0

我对 C++ 比较陌生,我想问一下如何“从文件中生成变量”。我想编写一个程序来读取文件并使用符号作为标记,就像分配语言一样。

我希望它发出这样的频率:

!frequency:time,frequency:time;//!=start/;=end
4

2 回答 2

1

这是我如何理解你的问题。你有一个文件test.txt

time      freq
0.001     12.3
0.002     12.5 
0.003     12.7
0.004     13.4 

然后你想读入这个文件,这样你就可以time在一个容器中,在另一个容器freq中进行进一步处理。如果是这样,那么您的程序是这样的:

#include<iostream>
using namespace std;

int main()
{
    ifstream in_file("test.txt");

    string label1, label2;
    float val;

    in_file >> label1;  //"time"
    in_file >> label2;   // "freq"

    vector<float> time;
    vector<float> freq;

    while (in_file >> val)
    {   
            time.pushback(val);
            in_file >> val;        
            freq.pushback(val);
    }   
 }
于 2013-08-21T18:12:54.987 回答
0

对我在评论中提到的更通用的解决方案:

#include <iostream>
#include <sstream>

int main()
{
    std::map<std::string, std::vector<double> > values_from_file;

    std::ifstream in_file("test.txt");


    std::string firstLine;
    std::getline(in_file, firstLine);
    std::istringstream firstLineInput(firstLine);

    // read all the labels (symbols)
    do
    {
        std::string label;
        firstLineInput >> label;
        values_from_file[label] = std::vector<double>();
    } while(firstLineInput);

    // Read all the values column wise
    typedef std::map<std::string, std::vector<double> >::iterator It;

    while(in_file)
    {
        for(It it = std::begin(values_from_file);
            it != std::end(values_from_file);
            ++it)
        {
            double val;
            if(in_file >> val)
            {   
                it->second.push_back(val);
            }   
        }
    }
}
于 2013-08-21T19:01:09.403 回答