Предполагая, что внутри «слова» не будет пробелов (тогда это будет не 1 слово), вот пример того, как читать до конца файла:
std::ifstream file("file.txt");
std::string str;
int i;
while(file >> str >> i)
std::cout << str << ' ' << i << std::endl;
На самом деле это очень просто, вы можете найти ссылку здесь
Если вы используете табуляции в качестве разделителей, вы можете вместо этого использовать getline и установить разделитель аргумент для '\t'.
Более длинный пример:
#include <vector>
#include <fstream>
#include <string>
struct Line {
string text;
int number;
};
int main(){
std::ifstream is("myfile.txt");
std::vector<Line> lines;
while (is){
Line line;
std::getline(is, line.text, '\t');
is >> line.number;
if (is){
lines.push_back(line);
}
}
for (std::size_type i = 0 ; i < lines.size() ; ++i){
std::cout << "Line " << i << " text: \"" << lines[i].text
<< "\", number: " << lines[i].number << std::endl;
}
}
Оператор >> переопределен для std::string и использует пробел в качестве разделителя
so
ifstream f("file.txt");
string str;
int i;
while ( !f.eof() )
{
f >> str;
f >> i;
// do work
}