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 循环有关

4

3 回答 3

1
while(cin.eof());

阅读一个单词后,您不太可能处于 eof() 位置。你要

while(! cin.eof());

或更准确地说是一个循环,例如

while(cin >> buffer);

或者,更好的是,放弃 char 数组并使用 a stringand getline

于 2013-10-28T03:28:13.370 回答
0

您可以使用std::getline()获取每一行,例如

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

通过这样做,您的输入将不会被空格分隔符分隔

于 2013-10-28T03:31:17.387 回答
0

而不是使用cin.eof(),你为什么不尝试类似的东西:

std::string a;

while (std::getline(std::cin, a))
{
    //...
}
于 2013-10-28T03:35:57.157 回答