C ++读取输入文件

时间:2018-11-12 22:50:04

标签: c++ file input iostream

我在读取文件和保存值时遇到问题。

因此,输入文件包含:

  

3 5

     

W2 R3 W3 R4

我想要的是这个

  

F = 3

     

P = 5

     

char Ac [] = {'W','R','W','R'};

     

int acc [] = {2,3,3,4};

我已经有F = 3和P = 5,但是我不知道如何分隔其他字符串。

希望你能帮助我!

1 个答案:

答案 0 :(得分:0)

您可以逐字符读取字符,跳过空格。

或者您可以读入一个字符串,然后分割该字符串:

std::string  rw_text;
std::vector<char> Ac;
std::vector<int>  acc;
//...
while (input_file >> rw_text)
{
  const char letter = rw_text[0];
  const int number = rw_text[1] - '0';
  Ac.push_back(letter);
  acc.push_back(number);
}

您还可以使用struct将字母和数字保持在一起,就像pair

struct Letter_Number
{
  char letter;
  int  number;
  friend std::istream& operator>>(std::istream& input, Letter_Number& ln);
};

std::istream& operator>>(std::istream& input, Letter_Number& ln)
{
  input >> ln.letter;
  input >> ln.number;
  return input;
}

//...
std::vector<Letter_Number> database;
Letter_Number ln;
//...
while (input_file >> ln)  
{
  database.push_back(ln);
}

结构将使字母与它们的数字关联。在并行数组中,您可能具有不同的偏移量,否则该对将无法对齐。

此外,具有结构的字母和数字将位于处理器的同一数据高速缓存行上,因此您的程序将更高效。否则,处理器将必须加载Ac数组,获取值,然后加载acc数组并加载字符;浪费时间重新加载数据缓存。