@Chipu

Ошибка при выполнении программы, как ее исправить?

// ConsoleApplication3.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include "pch.h"
#include <iostream>
#include <string>
#include <cstring>
using namespace std;

int main()
{
	string s;
	cin >> s;
	int probel = 0;
	//Перед или после запятой пробел не ставится.
	for (int i = 0; i < sizeof(s); i++) 
	{
		if (s[i]==' ')
		{
			probel++;
		}
	}
	cout << probel<<"\t"<<sizeof(s);
	system("Pause");
}
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
DanielDemidko
@DanielDemidko
Программист
У вас ошибка, std::cin>>s считывает символы в строку до первого пробела.
Чтобы считать строку целиком, вместе с пробелами, нужно использовать std::getline(std::cin, s)
Вторая ваша ошибка в том, что sizeof(s) возвращает не длину строки, а размер типа std::string. Чтобы получить длину конкретной строки нужно использоватьstd::size(s) или s.size()
И, наконец, строка #include <cstring> вам ни к чему. Удалите её.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
sizeof(s)

если нужен размер строки, то s.size()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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