@igoodmood

Как убрать кодировку из программы С++?

Хочу осуществить копирование определенных элементов из одного в массива в другой, но возникла проблема : вместо ожидаемых значений появилась кодировка ASCII.
Вот скрин : a56b65f64989411d8c584984cfd2e3ed.PNG
Вот код :
#include "stdafx.h"
#include <iostream>
#define MAX 50
using namespace std;
int main()
{
	char str[50] = "12345678901";
	int i,l;
	double s1[MAX];
	i = 0;
	while(str[i] != '\0')
	{
		i++;
	}
	l = i / 2;
	for(i = 0; i < l; i++)
	{
		s1[i] = str[i];
		cout << s1[i] << endl;
	}
	system("pause");
	return 0;
}
  • Вопрос задан
  • 300 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Ну все правильно выводит. У вас три варианта:
1) Массив s1 объявлять как массив char (или вообще убрать его)
2) При копировании из str в s1 преобразовывать в число (atof и прочие) (если вам реально нужен массив s1)
3) При выводе в консоль из s1 приводить к char (самый плохой вариант)

Точнее сложно сказать, потому что назначение массива s1 например вообще непонятно - его вообще можно выкинуть.
Ответ написан
Комментировать
sfi0zy
@sfi0zy
Creative frontend developer
Вот тут
s1[i] = str[i];
происходит неявное преобразование char -> int -> double. А при char -> int вы, разумеется, и получаете те самые ascii коды символов.

Возможно вы имели ввиду что-то такое
s1[i] = str[i] - '0';
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы