首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用cin从用户获取输入

使用cin从用户获取输入
EN

Stack Overflow用户
提问于 2010-02-02 20:56:16
回答 3查看 9.4K关注 0票数 1

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

在使用以下代码时..

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

当我输入空格的时候...它只保存在空格前键入的字符。就像如果我输入"QWERT YUIOP“...名称将包含"QWERT";

有什么解释吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-02 20:58:32

您需要为要读取名称的char数组分配空间。char *Name;不会工作,因为它只声明一个字符指针,而不是一个字符数组。像char Name[30];这样的东西

此外,cin <<只允许我们在字符串中输入一个单词(char name30)。

但是,有一个cin函数可以读取包含空格的文本。

cin.get(name, MAX)  

get将读取包括空格在内的所有字符,直到读取了最大字符数或达到行尾字符(‘\n’),并将它们放入名称变量中。

票数 2
EN

Stack Overflow用户

发布于 2010-02-02 21:03:12

cin用于读入字符串时,除非您另外指定,否则它会自动在空格处换行。

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

或者,如果您想要获取整个行,则可以使用:

std::getline(cin, s);

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

票数 6
EN

Stack Overflow用户

发布于 2010-02-02 20:58:25

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

char Name[50];

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2184125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档