关于文件:如何在C ++中读取不同的格式?

How to read different formats in C++?

本问题已经有最佳答案,请猛点这里访问。

例如:

1
2
3
Adam Peter Eric
John Edward
Wendy

我想存储在3个字符串数组中(每行代表一个数组),但我一直在研究如何逐行读取它。

这是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 string name [3][3] ;
 ifstream  file ("TTT.txt");
 for (int x = 0; x < 3; x++){
     for (int i = 0; x < 3; i++){
         while (!file.eof()){
             file >> name[x][i];
         }
     }
 }

 cout << name[0][0];
 cout << name[0][1];
 cout << name[0][2];

 cout << name[1][0];
 cout << name[1][1];
 cout << name[2][0];

}


您可以使用std::getline直接读取整行。之后,只需使用空格作为分隔符来获取各个子字符串:

1
2
3
4
5
6
7
8
9
std::string line;
std::getline(file, line);
size_t position;
while ((position =line.find("")) != -1) {
  std::string element = line.substr(0, position);
  // 1. Iteration: element will be"Adam"
  // 2. Iteration: element will be"Peter"
  // …
}

您可以使用std::getline()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
std::ifstream  file ("TTT.txt");
std::string line;
std::string word;
std::vector< std::vector<std::string> > myVector; // use vectors instead of array in c++, they make your life easier and you don't have so many problems with memory allocation
while (std::getline(file, line))
{
    std::istringstream stringStream(line);
    std::vector<std::string> > myTempVector;

    while(stringStream >> word)
    {
        // save to your vector
        myTempVector.push_back(word); // insert word at end of vector
    }
    myVector.push_back(myTempVector); // insert temporary vector in"vector of vectors"
}

在C++中使用STL结构(向量、映射、对)。它们通常会让你的生活更轻松,你的内存分配问题也更少。