#include <iostream>
#include <cstdlib>
#include <cstring>
#include <ctype.h>
#include <cmath>
using namespace std;
int main(int argc, char *argv[])
{
char buffer[100]= {};
int length = 0;
cout << "Enter a string: ";
do
{
cin >> buffer;
}
while(cin.eof());
length = strlen(buffer);
int squareNum = ceil(sqrt(length));
cout << squareNum;
cout << buffer;
}
В основном то, что я пытаюсь сделать, это заполнить массив символов строкой, которую я вводил. Однако я считаю, что это только запись в массив до появления пробела.
Ex.
Input: this is a test
Output: this
Input:thisisatest
Output:thisisatest
Почему он останавливается в пространстве? Я почти уверен, что это связано с циклом.eof
while(cin.eof());
Вероятно, вы находитесь на eof() после прочтения одного слова. Вы хотите
while(! cin.eof());
или, точнее, петлю, что-то вроде
while(cin >> buffer);
Или, что еще лучше, обойтись без массивов char и использовать string
и getline
.
Вместо использования cin.eof()
, почему бы вам не попробовать что-то вроде:
std::string a;
while (std::getline(std::cin, a))
{
//...
}
Вы можете использовать std::getline()
чтобы получить каждую строку, например
std::getline (std::cin,name)
Делая это, ваш вход не будет разделен разделителем пробела