0 / 0 / 0 Регистрация: 21.12.2015 Сообщений: 17 |
|
1 |
|
Поиск символа в текстовом файле18.05.2016, 19:57. Показов 6499. Ответов 14
Как можно организовать поиск введенного символа в txt файле?
0 |
1505 / 968 / 812 Регистрация: 30.04.2016 Сообщений: 3,334 |
|
18.05.2016, 20:24 |
2 |
lllenium, что именно вам нужно? Сколько раз встречается заданный символ? Или нужно заменить один символ на другой. Может быть, что-то еще?
0 |
0 / 0 / 0 Регистрация: 21.12.2015 Сообщений: 17 |
|
19.05.2016, 10:37 [ТС] |
3 |
Нужно найти этот символ, и ту строку где он находится перенести в конец txt файла.
0 |
Fixer_84 1505 / 968 / 812 Регистрация: 30.04.2016 Сообщений: 3,334 |
||||
19.05.2016, 21:42 |
4 |
|||
Сообщение было отмечено lllenium как решение Решениеlllenium, смотрите код ниже. Я ищу ту строчку, в которой этот символ встречается впервые.
1 |
0 / 0 / 0 Регистрация: 21.12.2015 Сообщений: 17 |
|
19.05.2016, 21:54 [ТС] |
5 |
Спасибо большое А как сделать, чтобы пользователь при запуске программы сам вводил искомый символ?
0 |
Fixer_84 1505 / 968 / 812 Регистрация: 30.04.2016 Сообщений: 3,334 |
||||
19.05.2016, 22:29 |
6 |
|||
lllenium, ниже код с учетом ваших пожеланий.
1 |
0 / 0 / 0 Регистрация: 21.12.2015 Сообщений: 17 |
|
21.05.2016, 13:48 [ТС] |
7 |
Fixer_84 простите за беспокойство, но мне снова нужна ваша помощь
0 |
Fixer_84 1505 / 968 / 812 Регистрация: 30.04.2016 Сообщений: 3,334 |
||||
21.05.2016, 14:49 |
8 |
|||
Сообщение было отмечено lllenium как решение Решениеlllenium, ниже ответ на ваш вопрос.
1 |
0 / 0 / 0 Регистрация: 21.12.2015 Сообщений: 17 |
|
21.05.2016, 16:16 [ТС] |
9 |
Благодарю!
0 |
0 / 0 / 0 Регистрация: 24.05.2016 Сообщений: 2 |
|
24.05.2016, 13:08 |
10 |
А можно ли сделать так, чтобы при вводе искомого символа, программа искала его сразу во всем txt файле и все строки с этим символом переносила в конец txt файла. Просто сейчас она ищет первый попавшийся
0 |
Fixer_84 1505 / 968 / 812 Регистрация: 30.04.2016 Сообщений: 3,334 |
||||
24.05.2016, 17:48 |
11 |
|||
Klla, конечно можно Вот программа, отвечающая на ваш вопрос.
1 |
0 / 0 / 0 Регистрация: 24.05.2016 Сообщений: 2 |
|
25.05.2016, 01:13 |
12 |
Спасибо , но здесь отсутствует функция количества перевода строк(“Сколько раз перенести строку”), мне она тоже нужна, доработайте код если вас это не затруднит).
0 |
Fixer_84 1505 / 968 / 812 Регистрация: 30.04.2016 Сообщений: 3,334 |
||||
25.05.2016, 17:55 |
13 |
|||
Сообщение было отмечено lllenium как решение РешениеKlla, вот доработанная программа. Надеюсь, это то что нужно.
1 |
lllenium 0 / 0 / 0 Регистрация: 21.12.2015 Сообщений: 17 |
||||
29.05.2016, 16:07 [ТС] |
14 |
|||
Здравствуйте, не так давно вы по моей просьбе делали программу для поиска символа и переноса строк.
0 |
Fixer_84 1505 / 968 / 812 Регистрация: 30.04.2016 Сообщений: 3,334 |
||||
04.06.2016, 15:39 |
15 |
|||
lllenium, никогда этого не делал. Вот программа. Надеюсь, она вас устроит.
1 |
My batch file reads the value of a registry key and stores its value in the variable key
. So the value happens to be "H:KMSpicoKMSpicoUninst.exe" /u0=KMSpico
. I want to extract the part of this string that is enclosed in
""
. and store it in another variable, say uninstall
. I could have easily done it by the following code: SET uninstall=%key:~1,30%
. But the problem is that, the part before Uninst.exe
, i.e. H:KMSpicoKMSpico
which specifies the location of Uninst.exe
might change depending upon the location where the user has installed the software, therefore the length of the part that is to be extracted might change. But the above code is set to extract the string only up to 30
characters.
Therefore, I wanted to know if there is way, so that we can somehow know the position of second "
, so as to know the number of characters to be extracted. Or if there is some another way, to do this.
asked Apr 19, 2015 at 14:04
The simple FOR loop preserves quoted values as a single string. You know it is the first value, so simply GOTO a label to break out of the loop after a single iteration.
for %%A in (%key%) do set "uninstall=%%A"&goto :break
:break
answered Apr 19, 2015 at 16:56
dbenhamdbenham
127k28 gold badges248 silver badges385 bronze badges
So you are using a pirated windows? 🙂
try this
@echo off
rem :: I suppose you are capable to get the value from the registry and save is as variable.
set "reg_key="H:KMSpicoKMSpicoUninst.exe" /u0=KMSpico"
for /f "usebackq tokens=1" %%a in ('%reg_key%') do set "uninstaler=%%~a"
echo %uninstaler%
answered Apr 19, 2015 at 16:51
npocmakanpocmaka
55k18 gold badges146 silver badges185 bronze badges
1
Как в текстовом документе найти определенную позицию |
Я |
19.09.13 – 12:05
Столкнулся с весьма тупой проблемой 🙂
Есть текстовый файл. нужно перейти на определенную позицию символа (именно символа, а не строки). И просто посмотреть что там.
Не могу ни в одной программе это сделать. Единственная где показывают номер позиции в файле – это FAR, но там нужно перемещаться клавишами по файлу. И перейти на позицию №120000, где-то в середине файла весьма проблематично.
доступный арсенал :
FAR
Total
ms word 2010
или готов выкачать что-то другое.
1 – 19.09.13 – 12:08
Может 1С-ом попробовать?
2 – 19.09.13 – 12:09
(1) походу это будет самый простой вариант ..
3 – 19.09.13 – 12:24
notepad++
4 – 19.09.13 – 12:25
FAR + Alt+F8
5 – 19.09.13 – 12:28
(0) Нажми ctrl+g
6 – 19.09.13 – 12:45
(5) из всего что там есть, нету перейти на позицию
mistеr
7 – 19.09.13 – 12:47
head
В этом посте мы обсудим, как найти индекс символа в строке на C++.
1. Использование string::find
The string::find
функция-член возвращает индекс первого вхождения указанного символа в строку или string::npos
если персонаж не найден. В следующем примере показан вызов этой функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> #include <string> int main() { std::string s = “C++20”; char c = ‘+’; int index = s.find(c); if (index != std::string::npos) { std::cout << “Character found at index “ << index << std::endl; } else { std::cout << “Character not found” << std::endl; } return 0; } |
Скачать Выполнить код
результат:
Character found at index 1
Вот эквивалентная версия с использованием std::find
стандартный алгоритм, который принимает диапазон для поиска указанного элемента и возвращает итератор к первому элементу в нем.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <string> #include <algorithm> int main() { std::string s = “C++20”; char c = ‘+’; auto it = std::find(s.begin(), s.end(), ‘+’); if (it != s.end()) { int index = std::distance(s.begin(), it); std::cout << “Character found at index “ << index << std::endl; } else { std::cout << “Character not found” << std::endl; } return 0; } |
Скачать Выполнить код
результат:
Character found at index 1
2. Использование std::string_view
C++17 позволяет формировать строковое представление символьного литерала, используя std::literals::string_view_literals::operator””sv, заявлено в шапке <string_view>
. Получив строковое представление, мы можем использовать find()
функция, чтобы получить позицию первого символа данной последовательности символов, или std::string::npos
если он не найден. Например,
#include <iostream> #include <string_view> using namespace std::string_view_literals; int main() { size_t index = “C++20”sv.find(‘+’); if (index != std::string::npos) { std::cout << “Character found at index “ << index << std::endl; } else { std::cout << “Character not found” << std::endl; } return 0; } |
Скачать код
результат:
Character found at index 1
Вот и все, что касается поиска индекса символа в строке в C++.
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
Вы не сообщили, в объекте какого типа у вас хранится строка.
Ниже показана демонстрационная программа, которая осуществляет поиск символа в символьном массиве s1
и в объекте с именем s2
класса std::string
.
#include <iostream>
#include <string>
#include <cstring>
int main()
{
char s1[] = "2 * 2 = 4";
std::string s2( s1 );
char c = '=';
char *p = std::strchr( s1, c );
if ( p != nullptr )
{
std::cout << "Character " << c << " found at position " << p - s1 << std::endl;
std::cout << "The rest of the string is "" << p << """ << std::endl;
}
std::string::size_type n = s2.find( c );
if ( n != std::string::npos )
{
std::cout << "Character " << c << " found at position " << n << std::endl;
std::cout << "The rest of the string is "" << s2.substr( n ) << """ << std::endl;
}
}
Вывод программы на консоль выглядит следующим образом:
Character '=' found at position 6
The rest of the string is "= 4"
Character '=' found at position 6
The rest of the string is "= 4"