#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循环
答案 0 :(得分:1)
while(cin.eof());
读完一个单词后,你不太可能在eof()。你想要
while(! cin.eof());
或更恰当的循环,如
while(cin >> buffer);
或者,更好的是,省去char数组并使用string
和getline
。
答案 1 :(得分:0)
您可以使用std::getline()
获取每一行,例如
std::getline (std::cin,name)
通过这样做,您的输入将不会被空格分隔符
分隔答案 2 :(得分:0)
为什么不尝试使用cin.eof()
,而不是使用std::string a;
while (std::getline(std::cin, a))
{
//...
}
。
{{1}}