Вопрос такой : можно ли сделать ручной ввод для подобных заданий через cin ? Через обычный cin не получается ни добавить, ни удалить пробелы - выводит до первого пробела. То есть для подобных заданий нельзя использовать обычный cin, ибо будет выводить до первого пробела?(не getline и подобное)
#include <iostream>
using namespace std;
#include <conio.h>
#include <stdio.h>
void main()
{
setlocale(0, "rus");
char nach1[] = "Its me Dio ";
char con1[50];
int jj = 0;
for (int i = 0; i < strlen(nach1 - 1); i++)
{
if (nach1[i] == ' ' && nach1[i + 1] == ' ')continue;
con1[jj] = nach1[i], jj++;
}
con1[jj] = 0;
char* vr = con1;
if (con1[0] == ' ')vr++;
cout << vr << endl << endl;
_getch();
}
Вас интересует поведение оператора чтения C-строк из потока. В справке написано:
Extracts characters from is and stores them in s as a c-string, stopping as soon as either a whitespace character is encountered or (width()-1) characters have been extracted (if width is not zero). A null character (charT()) is automatically appended to the written sequence. The function then resets width to zero.
Другими словами, читать он будет только до того символа, для которого isspace
вернет true
.
Оператор чтения std::string
из потока ведет себя аналогично:
This function overloads operator>> to behave as described in istream::operator>> for c-strings, but applied to string objects.
Но это ведь C++. Любую проблему можно решить при помощи макросов и шаблонов собственных классов и перегрузки операторов:
#include <iostream>
#include <string>
class Line{
std::string _string;
public:
Line(const std::string &string = std::string()):
_string(string)
{}
operator std::string() const{
return _string;
}
friend std::istream& operator>>(std::istream& is, Line &line);
friend std::ostream& operator<<(std::ostream& os, const Line &line);
};
std::istream& operator>>(std::istream& is, Line &line){
std::getline(is, line._string);
return is;
}
std::ostream& operator<<(std::ostream& os, const Line &line){
os << line._string;
return os;
}
int main(){
Line name;
std::cout << "What is your name? "; //Chandler Bing
std::cin >> name;
std::cout << "Hello, " << name << "!\n"; //Hello, Chandler Bing!
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем привет! Решил написать программу на с++, уже заканчивал делать и понеслаааась:
Мне нужно самой написать для класса String оператор operator=Но он не правильно работает
Возникли трудности в процессе написания динамической библиотеки, содержащей реализацию методов классаБиблиотека подключается к главному...