ループはoperator>>
を使用してファイルをアレイに読み込みます。その演算子は、一度に1単語を読み込みます。
const int numTracks = 25;
std::string tracks[numTracks];
int count = 0;
std::cout << "Reading SetList.txt into array" << std::endl;
std::ifstream inputFile;
inputFile.open("SetList.txt");
while (count < numTracks)
{
if (!std::getline(inputFile, tracks[count])) break;
count++;
}
inputFile.close();
または::また
const int numTracks = 25;
std::string tracks[numTracks];
int count = 0;
std::cout << "Reading SetList.txt into array" << std::endl;
std::ifstream inputFile;
inputFile.open("SetList.txt");
while ((count < numTracks) && (std::getline(inputFile, tracks[count]))
{
count++;
}
inputFile.close();
、std::vector
の代わりに、固定された配列を使用することを検討して、その後、あなたはstd::istream_iterator
を使用することができますが、完全にその演算子を削除し、配列を埋めるためにstd::getline()
を使用し、例えばする必要がありますstd::back_inserter
を使用すると、手動ループを完全に取り除くことができます。
class line : public std::string {}
std::istream& operator>>(std::istream &is, line &l)
{
return std::getline(is, l);
}
...
std::vector<std::string> tracks;
std::cout << "Reading SetList.txt into array" << std::endl;
std::ifstream inputFile;
inputFile.open("SetList.txt");
std::copy(
std::istream_iterator<line>(inputFile),
std::istream_iterator<line>(),
std::back_inserter(tracks)
);
inputFile.close();
ループ内では「トラック」は何もしていません。 – user657267