使用cin从用户那里获得输入

时间:2010-02-02 12:56:16

标签: c++ cin

我正在使用Turbo C ++ 3.0编译器

使用以下代码时..

char *Name;
cin >> Name;
cout << Name;

当我输入空格时......在空格之前键入的唯一保存字符.. 就像我输入“QWERT YUIOP”...名称将包含“QWERT”;

任何解释原因??

3 个答案:

答案 0 :(得分:5)

cin用于读取字符串时,除非另有指定,否则它会自动在空白处中断。

std::string s;
std::cin >> noskipws >> s;

或者,如果您想获得整行,请使用:

std::getline(cin, s);

您还需要为原始char数组分配存储空间,但使用C ++时,无论如何都应使用std::stringstd::wstring

答案 1 :(得分:2)

您需要为要读取名称的char数组分配空间。 char *Name;将不起作用,因为它只声明一个char指针而不是一个char数组。像char Name[30];

这样的东西

此外cin <<只允许我们在字符串中输入一个单词(字符名称[30]) 但是,有一个cin函数可以读取包含空格的文本。

cin.get(name, MAX)  

get将读取所有字符,包括空格,直到Max字符有 已被阅读或到达行尾字符('\ n')并将它们放入 进入名称变量。

答案 2 :(得分:1)

您刚刚声明了一个不指向任何内容的字符指针。您需要为字符串分配空间。最常见的方法是在堆栈上分配空间,IE:

char Name[50];

记住一个char指针本身就是一个将地址放到真实内存所在位置的地方。您仍然需要获取一块内存并将地址存储在指针中。上面的代码在堆栈上创建了一个Name数组,你可以使用Name来存储最多49个字符加上一个空终端。

或者,对于可变长度字符串,请使用std :: string。