我的输入是否正确写入我的阵列?

时间:2013-10-28 03:21:21

标签: c++ arrays

#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循环

3 个答案:

答案 0 :(得分:1)

while(cin.eof());

读完一个单词后,你不太可能在eof()。你想要

while(! cin.eof());

或更恰当的循环,如

while(cin >> buffer);

或者,更好的是,省去char数组并使用stringgetline

答案 1 :(得分:0)

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

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

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

分隔

答案 2 :(得分:0)

为什么不尝试使用cin.eof(),而不是使用std::string a; while (std::getline(std::cin, a)) { //... }

{{1}}