Правильно ли записывается мой ввод в мой массив?

0
#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

Теги:
arrays

3 ответа

1
while(cin.eof());

Вероятно, вы находитесь на eof() после прочтения одного слова. Вы хотите

while(! cin.eof());

или, точнее, петлю, что-то вроде

while(cin >> buffer);

Или, что еще лучше, обойтись без массивов char и использовать string и getline.

0

Вместо использования cin.eof(), почему бы вам не попробовать что-то вроде:

std::string a;

while (std::getline(std::cin, a))
{
    //...
}
0

Вы можете использовать std::getline() чтобы получить каждую строку, например

std::getline (std::cin,name)

Делая это, ваш вход не будет разделен разделителем пробела

Ещё вопросы

Сообщество Overcoder
Наверх
Меню