я немного застрял на том, что я хочу сделать с моей C++ код:Возьмите только первые пять строк длинного списка, разделенных пустыми строками (C++)
int main() {
char bid_price[512];
char bid_volume[512];
char ask_price[512];
char ask_volume[512];
const int MAX_LEN = 512;
ifstream in_stream;
in_stream.open("test.txt");
char current_string[MAX_LEN];
if (!in_stream) {
cout << "Could not open data.txt" << endl;
return false;
}
for (int i=0; i<150 &&
(in_stream.getline(current_string,MAX_LEN) && current_string.length()==0); i++) {
in_stream.getline(current_string, MAX_LEN);
get_word(current_string, 1, bid_price);
cout << "First word is: " << bid_price << endl;
get_word(current_string, 2, bid_volume);
cout << "Second word is: " << bid_volume << endl;
get_word(current_string, 4, ask_price);
cout << "Third word is: " << ask_price << endl;
get_word(current_string, 5, ask_volume);
cout << "Fourth word is: " << ask_volume << endl;
}
in_stream.close();
return 0;
}
Я хотелось бы сделать только первые пять строк такого списка в txt-файле, например:
- 383.80000 | 0,014 | 1461142717 || 383.67000 | 5.141 | 1461142798
- 383.61100 | 0,010 | 1461134871 || 383.60000 | 9.076 | 1461142798
- 383.51100 | 0,010 | 1461136836 || 383,46100 | 0,400 | 1461142794
- 383.41100 | 0,010 | 1461129820 || 383.35000 | 7,740 | 1461142798
- 383.31100 | 0,010 | 1461129821 || 383.30000 | 0,014 | 1461142637
- 383.21100 | 0,010 | 1461138430 || 383.20000 | 2.000 | 1461142787
- 383.16100 | 9.089 | 1461142763 || 383.11100 | 0,010 | 1461134135
- "EMPTY LINE"
- 383.01100 | 8,573 | 1461138900 || 383.00000 | 50.037 | 1461142501
- 382.98300 | 5.000 | 1461135929 || 382.97000 | 0.150 | 1461142461
- 382.93400 | 3,476 | 1461138822 || 382.91100 | 0,010 | 1461128348
- 382.81900 | 8,762 | 1461136840 || 382.81100 | 0,010 | 1461128350
- 382.80000 | 0,014 | 1461141922 || 382.71100 | 0,010 | 1461142621
- 382.68000 | 15.936 | 1461142797 || 382.67000 | 2.000 | 1461141655
- 382.66900 | 4.305 | 1461130920 || 382.61100 | 0,010 | 1461136076
В этом случае я бы только номер строки 1,2,3,4,5 и 9,10,11,12,13 Примечание: Nevermind функции get_word
, она работает очень хорошо.
Также выполните поиск близких совпадений с помощью «stackoverflow C++ read file struct» и «разделитель разделов с файлом stackoverflow». –
Очевидно ли, что для чтения первых 5 строк вы бы изменили сравнение в вашем цикле 'for' до 5? –
Pleaae, пожалуйста, не используйте массив символов для представления строк в C++. Когда это возможно, используйте вместо этого 'std :: string'. И я также не буду использовать 'endl', если вы не захотите явно очистить вывод консоли после каждой строки. – MikeMB