[C++] Ascii w łancuchu strcat

Dlaczego nie moge dodać do łańcucha str1 znak zwrócony z asci ??

int ascii;

cout << "nr znaku ";

cin >> ascii;

char str1[255];

strcat(str1,char(ascii));

cout<




wywala błąd przy stract

[code]15 D:\c++\asci II.cpp invalid conversion from char' toconst char*’ 15 D:\c++\asci II.cpp initializing argument 2 of `char* strcat(char*, const char*)’

Powinieneś zrobić, coś na typ tego :

#include 

#include 

#include 


using namespace std;


int main(int argc, char *argv[])

{

	int ascii;

	cout << "nr znaku ";

	cin >> ascii;

	char str1[255] = "AAAA";

	char * tekst = new char;

	*tekst = static_cast(ascii);

	cout << *tekst << endl;

	strcat(str1,tekst);

        delete tekst;

	int max = strlen(str1);

	str1[max-2] = '\0'; 

	cout << str1;

	system("pause");

	return 0;

}

W str1 powinien być już pewien ciąg znaków. Inaczej strcat raczej będzie dziwnie działać.

A ja bym zaproponował używanie języka C albo C++, ale nie C±.

C:

#include 

#include 


int main() {

    char str1[255] = "AAA";

    int ascii;

    printf("nr znaku ");

    scanf("%d", &ascii);

    strncat(str1, (char*)&ascii, 1);

    printf("%s\n", str1);

    return 0;

}

C++:

#include 

#include 


int main() {

    std::string str1 = "AAA";

    int ascii;

    std::cout << "nr znaku ";

    std::cin >> ascii;

    str1.append(reinterpret_cast(&ascii), 1);

    std::cout << str1 << std::endl;

    return 0;

}

Dlaczego C±? Bo ja Twojego toku rozumowania zbytnio nie rozumiem. Wydaje się, że normalne jest importowanie funkcji z C do C++ równie dobrze można napisać, że w C++ wykorzystanie I/O z C mija się z celem ale wiadomo, że printf jest szybsze od cout i ma to zastosowanie choćby w spooj’u, bo w końcu wykonanie programu musi zmieścić się w wyznaczonym czasie.

Spoj to wyjątek zresztą bardzo nieudany przykład, bo jaką częścią algorytmu może być wczytanie danych / wypisanie danych. Gdyby ktoś poszedł po rozum do głowy już dawno napisał by sprawdzarkę, która implementuje nie main tylko funkcję która dostaje z zewnątrz, wektor, tablicę, whatsoever, i zwraca wskaźnik na taką strukturę, która to już poza czasem liczonym na wykonanie algorytmu jest sprawdzana jeśli chodzi o poprawność.

Co do kodu @etam, ma racje. Pisanie takim łamanym dialektem jest bez sensu. Dopóki nie zależy nam na urwaniu 0.0001 sek w c++ powiniśmy korzystać z jego dobrodziejstw. Poza tym pomyślmy, że ktoś może kiedyś używać naszego kodu i nie musi znać C, żeby pisać w C++.

Dla mnie to raczej słabe połączenie pisanie czegokolwiek w C++, bez znajomości C. Również nie zauważyłem, że pesymistycznie określam używanie dobrodziejstw z danego języka. Jednak was nie potrafię zrozumieć, bo funkcje wywodzące się z

#include

takie, jak :

strcpy

strcat

Są poruszane w różnych kursach, czy nawet książkach. A jeżeli was dobrze rozumiem to to jest zły nawyk, bądź błąd