Рекомендую простую процедуру перевода из числа в строку:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
char c[10];
int n;
float f;
cin >> n;
sprintf (c, "%d", n);//целое число в строковый поток вывода по формату
cout << c << endl;
cin >> f;
sprintf (c, "%.5f", f);//вещественное число с 5 знаками после запятой
cout << c;
return 0;
}
Если нужно извлечь цифры из строки:
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string s;
char c;
cin >> s;
int n = s.size(), k;
for(int i = 0; i < n; i++)
if (s[i] >= '0' && s[i] <= '9')
{
k = s[i] - '0'; //в цифру
cout << k;
c = k + '0'; //и обратно в символ
cout << c;
}
return 0;
}
return 0;
Если вы работали со string а нужно в какой-нибудь функции ссылку на char, то:
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string s;
cin >> s;
char *c = new char [(s.size()+1)];
strcpy (c, s.c_str());
cout << c;
delete c;
return 0;
}
Для тех же операций в С++:
#include <string>
#include <iostream>
#include <sstream>
stringstream (str_d) >> a; cout << a << endl;
stringstream (str_i) >> b; cout << b << endl;
//перевод из строки в число - 2 вариант
istringstream inp_s;
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
char c[10];
int n;
float f;
cin >> n;
sprintf (c, "%d", n);//целое число в строковый поток вывода по формату
cout << c << endl;
cin >> f;
sprintf (c, "%.5f", f);//вещественное число с 5 знаками после запятой
cout << c;
return 0;
}
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string s;
char c;
cin >> s;
int n = s.size(), k;
for(int i = 0; i < n; i++)
if (s[i] >= '0' && s[i] <= '9')
{
k = s[i] - '0'; //в цифру
cout << k;
c = k + '0'; //и обратно в символ
cout << c;
}
return 0;
}
Еще один вариант:
#include <string.h>
#include <iostream>
#include <stdio.h> //для функции sscanf
#include <stdlib.h> //для функций atoi, atof, atol, itoa, ltoa
using namespace std;
int main()
{
char str[10] = "65.45";
#include <string.h>
#include <iostream>
#include <stdio.h> //для функции sscanf
#include <stdlib.h> //для функций atoi, atof, atol, itoa, ltoa
using namespace std;
int main()
{
char str[10] = "65.45";
float x;
sscanf (str, "%f", &x);//вещественное число
cin >> str;
int i;
sscanf (str, "%d", &i);//целое число
cout << i <<" "<<x;
//преобразование из строки в число
double c = atof ("23.4");
int b = atoi ("123");
long a = atol ("100000000");
cout << a <<" " << b << " " << c << endl;
//преобразование из числа в строку с указанием системы счисления
itoa (b, str, 10); cout << "10:" << str << endl;
itoa (b, str, 2); cout << "2:" << str << endl;
itoa (b, str, 8); cout << "8:" << str << endl;
itoa (b, str, 16); cout << "16:" << str << endl;
itoa (b, str, 5); cout << "5:" << str << endl;
ltoa (a, str, 10); cout << "long:" << str << endl;
}
#include <string.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string s;
cin >> s;
char *c = new char [(s.size()+1)];
strcpy (c, s.c_str());
cout << c;
delete c;
return 0;
}
Для тех же операций в С++:
#include <string>
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
double a;
int b;
string str_d = "74326.46238", str_i = "123";
//перевод из строки в число - 1 вариант
int main()
{
double a;
int b;
string str_d = "74326.46238", str_i = "123";
//перевод из строки в число - 1 вариант
stringstream (str_d) >> a; cout << a << endl;
stringstream (str_i) >> b; cout << b << endl;
//перевод из строки в число - 2 вариант
istringstream inp_s;
inp_s.str("25.02 rub");
inp_s >> a;
cout << a << endl;
inp_s.str("3 of clock");
inp_s >> b;
cout << b << endl;
//перевод из числа в строку
ostringstream out_s;
inp_s >> a;
cout << a << endl;
inp_s.str("3 of clock");
inp_s >> b;
cout << b << endl;
//перевод из числа в строку
ostringstream out_s;
out_s.precision(3); //задаем точность - 3 знака после запятой
out_s << "double:" << a << "\nfixed:" << fixed << a << "\n";
cout << out_s.str();
out_s.str(""); //очистка предыдущего потока
out_s << b << " int\n";
string s = out_s.str(); //сохраняем как строку
cout << s;
return 0;
}
out_s << "double:" << a << "\nfixed:" << fixed << a << "\n";
cout << out_s.str();
out_s.str(""); //очистка предыдущего потока
out_s << b << " int\n";
string s = out_s.str(); //сохраняем как строку
cout << s;
return 0;
}
Комментариев нет:
Отправить комментарий