Edycja zawartości Stringa C++

0

Witam.

Mam takie pytanie z ciekawości. Czy można edytować zawartość String w C++ ?. W dokładnym sensie chodzi mi o coś takiego że mam jakiś tekst w zmiennej i chcę go edytować w takiej formie że mogę dopisać coś nowego do tego lub coś skasować w treści tej zmiennej. Jak coś nie chodzi mi o takie rzeczy jak Append , erase itp.
Przykładowy kod:

#include<iostream>
using namespace std;
int main()
{
string zmienna="C";
cin>>zmienna; // W tym miejscu wyświetla się zawartość zmiennej. I możliwość operowania tymi danymi właśnie w formie edycji , kasowania lub dopisywania.
}

Dziękuję za każdą pomoc i życzę miłego dnia.

1

Dawno nie pisałem niczego w C, ale możesz użyć np. substring i dzięki temu otrzymać konkretny kawałek łańcucha a potem doklejać sobie co chcesz poprzez konkatancję.
https://www.tutorialspoint.com/substring-in-cplusplus

2

Przejrzyj sobie metody klasy string, Zobacz też na std::stringstream.

0

A ja mam wrażenie, że potrzebujesz readline, coś tego typu: https://github.com/Svalorzen/cpp-readline

0
pestka12 napisał(a):

Czy można edytować zawartość String w C++ ?. W dokładnym sensie chodzi mi o coś takiego że mam jakiś tekst w zmiennej i chcę go edytować w takiej formie że mogę dopisać coś nowego do tego lub coś skasować w treści tej zmiennej.

Można

Jak coś nie chodzi mi o takie rzeczy jak Append , erase itp.

A niby o co ci chodzi?
Tu masz dokumentację std::string

// W tym miejscu wyświetla się zawartość zmiennej. I możliwość operowania tymi danymi właśnie w formie edycji , kasowania lub dopisywania.

Czy tobie chodzi o coś takiego jak help(type(zmienna)) z python?
C++ w standardzie nie zapewnia metadanych, więc nie ma takiego równoważnika.

1

Z biblioteką fmt (dostępną w bibliotece standardowej od C++20) możesz robić coś takiego

#include <iostream>
#include <fmt/core.h>

int main() {
    std::string s = fmt::format("I have {0} {1}\n", 5, "dogs");
    std::cout << s;
}
$ g++ test.cpp -o test -lfmt
$ ./test 
I have 5 dogs
1
enedil skomentował(a):
  • Z tego co rozumiem, chodzi o taki "box", w którym w terminalu będzie można sobie zaznaczać tekst, wklejać, usuwać, pisać, itd. - enedil 53 minuty temu
MarekR22 skomentował(a):
  • aaaa... pewnie mu chodzi o to, że program mu podpowiada co ma wpisać i on może to poprawić. Czyli cin >> zmienna nie tylko ma czekać na wprowadzanie danych, ale dane mają być już częściowo wprowadzone. - MarekR22 6 sekund temu

Zakładając, że się prawidłowo domyślamy o co ci chodzi to

  • standardowe wyjście i wejście nie posiadają takiej funkcjonalności, bo to są tylko strumienie danych
  • dlatego w standardowym C++ czegoś takiego nie zrobisz
  • potrzebna by była jakaś biblioteka np ncurses
  • a nawet z użyciem biblioteki, nie będzie to takie proste i raczej jest poza twoim obecnym zasięgiem.
0

Czyli w C++ coś takiego nie zrobię ? Jeśli dobrze zrozumiałem.

Dziękuję za każdą pomoc.

0

Zrobisz tylko nie w strumieniu per se tylko w sterowniku terminala czy cos

0

Zerknij na
https://github.com/arangodb/linenoise-ng
https://github.com/AmokHuginnsson/replxx

Nie używałem, ale z opisu wydają się robić to co potrzebujesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1