Как вывести в консоль строчки начинающиеся только с 111?
Есть файл test.txt. В нем находится
"1234567890"
"1112345678"
"1234567890"
"1234567890"
"1118765432"
"ABCABCABCA"
"AAAABCABCA"
"AAADAADBCA"
Как вывести только те строчки в консоль где в начале есть 111XXXXXXX? В нашем случае вывести должно вывести
1112345678 1118765432
Ответы (2 шт):
Автор решения: Виктор
→ Ссылка
Просто делаем так:
std::string str;
// Тут загружаем строку из файла
if (3+7 == str.length() && str.rfind("111",0) == 0 ) {
// выводим строку
}
Разумеется, меняем 3+7 в зависимости от маски. Формируем в общем...
Итоговый код для изучения:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char *argv[]) {
string line;
cout << "Found: ";
int count = 0;
string mask_str = "111";
int mask_total_chars = 3 + 7;
ifstream infile("data.txt"); // Открываем файл
while (getline(infile, line)) // читаем строку, пока не конец файла
{
// Длина строки и начало совпадает с маской?
if (mask_total_chars == line.length() && line.rfind(mask_str,0) == 0 ) {
cout << line << " "; // Да, вывели на экран
count++; // Количество найденых элементов
}
}
cout << "[" << count << " items]" << endl;
return 0;
}
Данные в файле data.txt
Вывод: Found: 1112345678 1118765432 [2 items]
Ответ для @Mikhailo "как насчет строки 1112211133?":
string str ("1112211133");
string key ("111");
if (0==str.rfind(key,0))
cout << str << '\n';
else
cout << 'Not Found' << '\n';
Вывод: 1112211133
Автор решения: Mikhailo
→ Ссылка
Варианты для
строки С:
const char * s = "1112352327";
if (strncmp(s,"111",3) == 0) // Строка начинается с 111
строки C++
string s = "11152345646";
if (s.starts_with("111")) // Строка начинается с 111
if (s.substr(0,3) == "111") // Строка начинается с 111
if (s.find("111") == 0) // Строка начинается с 111