Zapis danych oddzielonych spacjami do string

0

Witam, piszę program który ma pobierać tekst od użytkownika (ograniczenie ok.512 znaków) łącznie ze wszystkimi znakami w tym ze spacją.

Zanim napisałem ten post 3h siedziałem w Google gdzie były rozwiązania, niestety u mnie zawsze program się zawieszał, wypisywał dziwne rzeczy (niektórych znaków nigdy na oczy nie widziałem! ), występował błąd w wpisywaniu do kolejnego string.

Mam kod znaleziony w Google:

#include <iostream>
using namespace std;

int main(void)
{

char dana[100];
cout<<"wprowadz tekst"<<endl;
cin.getline( dana,sizeof(dana) );
cout << "wpisales: " << dana << endl << endl;

system("pause");

return 0;
} 

Niestety po przełożeniu do mojego programu nie działa wpisanie kolejnych danych (lub sam pobiera wprowadzone wcześniej)

Inny kod:

int main()
{
  string tekst;
  getline(cin, tekst);
  cout << tekst;
  return 0;
}

Tu jednak string zapisuje tylko do spacji.

Kawałek mojego programu:

 
#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>
#include <fstream>
using namespace std;

void generacja()
{
	/*to tylko kawałek kodu */
	string nazwa_okna;
	string tekst;
	string nazwa_pliku;
	int obraz;
	int komenda;

	//Kod 
	system("cls");

	cout<<" Generator powiadomien"<<endl;
	cout<<endl;

	//Nazwa okna
	cout<<" Krok 1: Podaj nazwe okna"<<endl;
	cout<<" Twoja nazwa okna: ";
	cin>>nazwa_okna;
	cout<<endl;

	system("cls");

(Przed tym kawałkiem podaję się jedną zmienną int - Jeśli to komuś pomoże)

I proszę o pomoc lub zmienienie tego kawałka kodu tak by działał zgodnie z moją myślą.

0
#include <stdio.h>

int main() {
	char* bufor = new char[512];
	printf("Tekst: ");
	scanf("%[ A-Za-z0-9]", bufor);
	printf("Podany tekst: %s\n", bufor);
	return 0;
} 

Pierwsze rozwiązanie, które przyszło mi do głowy. Przeanalizuj kod to załapiesz jak to działa. Swoją drogą radzę nie używać 'endl' jeżeli chcesz złamać wiersz. Zamiast tego używaj znaku '\n'. Temat ten był wałkowany wielokrotnie ;)

0
const int n=100;
char tekst[n];
cin.getline(tekst, n);
cout<<tekst;
getch();
 

U mnie dziala...

0

Po dopisaniu kodu:

 
#include <stdio.h>
 
int pobierz()
{
        char* bufor = new char[512];
        printf("Tekst: ");
        scanf("%[ A-Za-z0-9]", bufor);
        printf("Podany tekst: %s\n", bufor);
        return 0;
} 

W programie wyskoczylo takie coś:

Wybierz opcje:

  1. Generuj powiadomienie!

< Tu wpisałem > 1
Tekst: Podany tekst: ═══════════════════════════════════════════════════════════
════════════════════════════════════════════════════════════════════════════════
════════════════════════════════════════════════════════════════════════════════
════════════════════════════════════════════════════════════════════════════════
════════════════════════════════════════════════════════════════════════════════
════════════════════════════════════════════════════════════════════════════════
═════════════════════════════════════════════════════řřřřźźźźźźźźţ■ţ■

0

Po co kombinujesz z jakimś lewym C w C++, skoro post wyżej masz rozwiązanie w C++, które po prostu działa. :-|

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