Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z funkcją insert

Ostatnio zmodyfikowano 2015-11-22 19:48
Autor Wiadomość
Jasiu1047
Temat założony przez niniejszego użytkownika
Problem z funkcją insert
» 2015-11-22 13:01:46
Dzień dobry!
Mam problem ze stworzonym programem który ma wyświetlić napis złożony z dwóch napisów od odpowiedniego miejsca w pierwszym napisie. Posłużyłem się funkcją insert. Natomiast po wpisaniu większej liczby program wyświetla mi błąd typu "The application has requested the Runtime to terminate...."
Załączam listing programu:

#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;

int main()
{
    int n;
string napist;
string napiss;
   
    cout<<"Wpisz pierwszy napis:";
    cin>>napist;
    cout<<"Wpisz drugi napis:";
    cin>>napiss;
   
cout<<"Wpisz wartosc n:";
    cin>>n;
    napist.insert(n,napiss);
    cout<<napist;
getchar(),getchar();
    return 0;      
}
Za wszelką pomoc dziękuje!
P-140545
carlosmay
» 2015-11-22 13:55:04
Jeśli podasz 'n' większą niż indeks w tablicy 'napist' (string to tablica char), to wychodzisz poza zakres tablicy i jest błąd.
C/C++
int main()
{
    int n;
    string napist;
    string napiss;
   
    cout << "Wpisz pierwszy napis:";
    cin >> napist;
    size_t len = napist.size(); // sprawdz dlugosc wyrazu 'napist'
    cout << "Wpisz drugi napis:";
    cin >> napiss;
   
    cout << "Wpisz wartosc n:";
    cin >> n; // wprowadz pozycje
    while( n > len ) // jesli pozycja jest poza wyrazem wprowadz jeszcze raz pozycje
         cin >> n;
   
    napist.insert( n, napiss );
    cout << napist;
    getchar(), getchar();
    return 0;
}
P-140552
Jasiu1047
Temat założony przez niniejszego użytkownika
» 2015-11-22 17:23:12
Myślałem jeszcze nad tym aby po wpisaniu większego n od długości wpisywal w wolne miejsca puste pola czyli spacje.
P-140591
carlosmay
» 2015-11-22 17:25:25
To dopisz kod, który to robi.
P-140592
Jasiu1047
Temat założony przez niniejszego użytkownika
» 2015-11-22 17:55:57
Jest jakas funkcja podobna do cout.setf tylko z zastosowaniem do stringów?
P-140594
carlosmay
» 2015-11-22 19:26:48
Oblicz różnice między długością stringa, a podaną liczbą i dodaj na koniec tyle razy spację.
C/C++
// roznica wynosi 5
for( int i = 0; i < 5; i++ )
     napist += " "; // np

 
P-140600
Jasiu1047
Temat założony przez niniejszego użytkownika
» 2015-11-22 19:48:38
dziękuje za pomoc
P-140603
« 1 »
  Strona 1 z 1