[C/ C++] Konwersja stringa na trochę innego stringa

Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C/ C++] Konwersja stringa na trochę innego stringa

Post autor: miki999 »

Witam,

mamy sobie wiele prostych programów, które pozwalają wysyłać dane portem szeregowym (np. HyperTerminal).
Problem polega na tym, że wysyłają one stringi.
Załóżmy, że chcę wysłać: "105", wtedy portem leci kod ASCII liczby "1", "0" i "5".

Do rzeczy:
chcę, napisać program, który konwertuje daną liczbę do kodu ASCII (string albo char) odpowiadającemu tej liczbie.

Przykładowo:
Mam liczbę "123". Jak patrzymy w tabeli ASCII jest to: "{" i chciałbym, aby program przekształcił stringa "123"(np. wczytanego z pliku) na "{".
Przykładowo printf automatycznie robi taką transformację:

Kod: Zaznacz cały

printf("%c", 123);
(stringa "123" łatwo jest przekształcić na inta używając chociażby strtol)

Istnieje jakiś prosty przepis na to?
Nie zależy mi na prędkości itp., tylko na funkcjonalności, więc używanie dowolnych bibliotek jest dozwolone.
knrdk
Użytkownik
Użytkownik
Posty: 36
Rejestracja: 12 mar 2009, o 13:54
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 5 razy
Pomógł: 7 razy

[C/ C++] Konwersja stringa na trochę innego stringa

Post autor: knrdk »

Kod: Zaznacz cały

#include <iostream>
#include <string>
#include <sstream>
#include <cstdlib>

using namespace std;
int main(){
    string y = "123";
    
    stringstream s;
    s << (char)atoi(y.c_str());
    
    string x;
    s >> x;
    cout << x;
}
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C/ C++] Konwersja stringa na trochę innego stringa

Post autor: Althorion »

Liczbę? To po prostu rzuć do chara, (char) liczba. Stringa? To najpierw na liczbę, a potem rzucasz.

Char w C(++) to po prostu jednobajtowa liczba, nic szczególnego.
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C/ C++] Konwersja stringa na trochę innego stringa

Post autor: miki999 »

Dzięki, w międzyczasie walnąłem se taki kod:

Kod: Zaznacz cały

#include "stdafx.h"
#include <string>


int _tmain(int argc, _TCHAR* argv[])
{
	FILE * pFile;
	char mystring[100];
	short int data[20];
	char * pch;

	pFile = fopen ("before.txt" , "r");

	if (pFile == NULL) printf("Error");
	else {

		 while ( fgets (mystring , 100 , pFile) != NULL ){
			puts(mystring);
		 }
		 fclose (pFile);
	}

	pFile = fopen ("after.txt" , "w");


	if (pFile == NULL) printf("Error");
	else {
		pch=strtok(mystring, ".");
	
		 while (pch != NULL){
			fprintf (pFile, "%c
",strtoul(pch, NULL, 0));
			pch = strtok (NULL, " ,.-");
		 
		}
		fclose (pFile);
	}


	getchar();
	return 0;
}
(Program otwiera plik before.txt, dzieli stringi napotykając na któryś ze znaków: ,.-, a potem zapisuje do pliku after.txt, co oczekiwałem.)


Jak to zwykle u mnie bywa przerost formy nad treścią

Dzięki za odpowiedzi.
ODPOWIEDZ