У меня есть файл, который состоит из линий, которые выглядят следующим образом:Самый короткий способ прочитать эту строку?
Alice 60 30 75
Bob 20 250 12
Где имя и целые длины являются переменными. Каков самый короткий способ поместить имя в строку и целые числа в массив размером 3? Я сделал getline(), а затем вытолкнул первый символ до первого пробела в вектор char, передал в строку, затем сделал следующий символ пробелу, преобразованный с помощью atoi(), затем отправленный в массив и т. Д. Я чувствую, что есть вероятно, намного лучший способ?
Я попытался рекомендации линии это:
int main() {
ifstream infile("wheelgame.txt");
string s;
vector<int> a(3);
while (cin >> s >> a[0] >> a[1] >> a[2])
{
cout << "test";
}
}
Но я думаю, что я недоразумение? Так происходит вечно.
Вы получаете +1 за использование вектора вместо массива. Лучше использовать [std :: array] (http://en.cppreference.com/w/cpp/container/array), хотя, если вам не требуется повторная калибровка. – NathanOliver
Спасибо, что выглядит намного лучше. Я вынужден использовать массив, потому что мне нужно передать его функции, которая принимает список [], но это все равно будет работать хорошо. Вы можете использовать getline() с этим? – Austin
@AustinMW Вы всегда можете просто скопировать содержимое вектора в массив, если вам действительно нужно. –