在C ++程序中没有显示完整字符串

时间:2013-11-21 18:09:16

标签: c++

我有跟随Simple程序在C ++中打印字符串,但是这个程序只在空格之前读取字符,而不是读取完整的字符串。

#include<iostream>
using namespace std;
int main()
{
    char str[90];
    cout << "Enter a string:";
    cin >> str;
    cout << str;
system("pause");
}

2 个答案:

答案 0 :(得分:3)

这是设计使然:cin“打破”空白字符上的行,例如空格和制表符。

此外,您将输入限制为90个字符,这也不好:输入超过90个字符且中间没有空格会溢出缓冲区。

以下是解决问题的方法:

std::string str;
std::cout << "Enter a string: ";
std::getline(std::cin, str);

与字符数组不同,std::string个对象可以动态增长,因此它们可以容纳用户选择输入的任意数量的字符。

您需要添加两个标头才能进行编译:

#include <string>
#include <iostream>

答案 1 :(得分:2)

>>只读一个字。您希望getline读取整行:

cin.getline(str, sizeof str);

现在的问题是,如果太长,该行将被截断。要解决这个问题,请使用字符串而不是固定大小的缓冲区:

string str;
getline(cin, str);