我正在使用Turbo C ++ 3.0编译器
使用以下代码时..
char *Name;
cin >> Name;
cout << Name;
当我输入空格时......在空格之前键入的唯一保存字符.. 就像我输入“QWERT YUIOP”...名称将包含“QWERT”;
任何解释原因??
答案 0 :(得分:5)
当cin
用于读取字符串时,除非另有指定,否则它会自动在空白处中断。
std::string s;
std::cin >> noskipws >> s;
或者,如果您想获得整行,请使用:
std::getline(cin, s);
您还需要为原始char
数组分配存储空间,但使用C ++时,无论如何都应使用std::string
或std::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。