Edycja zawartości Stringa C++

Edycja zawartości Stringa C++
P1
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 miesiące
  • Postów:179
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:

Kopiuj
#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.

jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Postów:3510
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

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około 4 godziny
  • Postów:4936
2

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


enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 13 godzin
  • Postów:1027
0

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

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:4 minuty
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

Kopiuj
// 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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
enedil
Z tego co rozumiem, chodzi o taki "box", w którym w terminalu będzie można sobie zaznaczać tekst, wklejać, usuwać, pisać, itd.
MarekR22
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.
Spearhead
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 8 godzin
  • Postów:1002
1

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

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

int main() {
    std::string s = fmt::format("I have {0} {1}\n", 5, "dogs");
    std::cout << s;
}
Kopiuj
$ g++ test.cpp -o test -lfmt
$ ./test 
I have 5 dogs
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:4 minuty
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.

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
stivens
Z ncurses to jest w miare proste jesli mysli sie o buforze a nie zmiennej jako takiej
P1
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 miesiące
  • Postów:179
0

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

Dziękuję za każdą pomoc.

stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
0

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


λλλ
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:dzień
  • Postów:289
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.