C ++“cin”只读取第一个单词

时间:2012-02-27 17:21:13

标签: c++ string

#include<iostream.h>
#include<conio.h>
class String
{
    char str[100];
    public:
    void input()
    {
        cout<<"Enter string :";
        cin>>str;
    }

    void display()
    {
        cout<<str;
    }
};

int main()
{
     String s;
     s.input();
     s.display();
     return 0;
}

我在Turbo C ++ 4.5中工作。代码运行正常,但它没有提供所需的输出 例如,如果我将输入视为“steve hawking”,则仅显示“steve”。有人可以帮忙吗?

5 个答案:

答案 0 :(得分:22)

在流上使用>>一次读取一个单词。要将整行读入char数组:

cin.getline(str, sizeof str);

当然,一旦你学会了如何实现字符串,你应该使用std::string并将其读作

getline(cin, str);

从本世纪开始编译器也是一个非常好的主意;你的年龄超过15岁,从那时起C ++发生了重大变化。如果您想要一个免费的Windows编译器,Visual Studio Express是一个不错的选择;其他编译器可用。

答案 1 :(得分:3)

cin>>str;

这只会读入下一个标记。在C ++ iostream中,令牌由空格分隔,因此您得到第一个单词。

你可能想要getline,它将整行读成一个字符串:

getline(cin, str);

答案 2 :(得分:2)

您可以使用:

   cin.read( str, sizeof(str) );

但是,这将填满缓冲区。相反,你应该使用cin.getLine()作为MikeSeymour建议

答案 3 :(得分:1)

您可以使用cin.getline来读取整行。

答案 4 :(得分:0)

使用此

cin.getline(cin, str);