Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 16:28   #1
DreamMaster911
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 19
По умолчанию С++ как вывести строку на экран?

Сейчас принтф выводит непонятные мне символы. (хотя значение строки при отладке верное)
Вот код:
Код:
#include <string>
using namespace std;
#include <locale.h>
/*
	Ввести с клавиатуры  целое число N. Используя рекурсию, распечатать  сначала последовательность, состоящую из N букв 'А', а затем из  N букв 'В'. 
*/

void Recurcion (int x, int count, string stroka1, string stroka2)
{
	if (count == x)											//условие выхода из рекурсии
	{
		stroka1 = stroka1+stroka2;
		printf("%s \n",stroka1);	//Вывод итога на печать
	}else
	{
		stroka1 = stroka1 + "A";
		stroka2 = stroka2 + "B";
		Recurcion(x,count+1, stroka1,stroka2);						//вызов функции внутри себя
	}
}


int main(void)
{
	setlocale( LC_ALL, "rus" );
	int x;
	string strokaA = "";
	string strokaB = ""; 
	printf("Введите количество символов: ");
	scanf("%d",&x);
	Recurcion(x,0,strokaA,strokaB);										// вызов рекурсивнной функции 
	system("PAUSE");
	return 0;
}

Последний раз редактировалось Stilet; 01.12.2013 в 18:08.
DreamMaster911 вне форума Ответить с цитированием
Старый 01.12.2013, 17:49   #2
_ZZZ000_
Новичок
Джуниор
 
Регистрация: 01.12.2013
Сообщений: 2
По умолчанию

string это класс, printf выводит char* или char[] . Пробуй:

Код:
printf("%s \n",&stroka1[0]);
Должно быть все норм.

А лучше, если на C++ программируешь пользуй для ввода/вывода cout и cin, а то scanf, printf - сишные функции.

Типа так:

Код:
 
cout << stroka1 ;
cin >> x ;

Последний раз редактировалось _ZZZ000_; 01.12.2013 в 17:55.
_ZZZ000_ вне форума Ответить с цитированием
Старый 08.12.2013, 01:19   #3
Егор Прус
 
Регистрация: 30.10.2013
Сообщений: 4
По умолчанию

в С++ со строками лучше использовать puts и gets
puts(stroka) вывод строки
gets(stroka) чтение строки
Егор Прус вне форума Ответить с цитированием
Старый 09.12.2013, 08:28   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Чтобы получить сишную строку из std::string, нужно вызвать ее функцию-член c_str:
Код:
printf("%s \n",stroka1.c_str());
А puts и gets - тоже сишные функции, в плюсах лучше использовать, как было сказано, потоки вывода - cin, cout и другие.
Кстати, для конструкции типа x = x + y; проще использовать x += y;
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести значение на экраН?? ~VL@D~ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.02.2011 12:37
Как вывести на экран \n в С++ nicklan Общие вопросы C/C++ 4 30.03.2010 17:02
Вывести строку на экран Dasharnb777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 13.02.2010 18:59
Помогите вывести строку на экран в обратном порядке(TASM .small) depocomp Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 21.05.2009 11:22
Ввести строку, вывести на экран символы, повторяющиеся в строке более 2 раз. bibl2008 Помощь студентам 4 01.03.2009 13:30