C++程序中未显示完整字符串

Full String is not showing in C++ program

本文关键字:字符串 显示 程序 C++      更新时间:2023-10-16

我有下面的Simple程序来用C++打印字符串,但这个程序只读取空格前的字符,而不读取完整的字符串。

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

这是经过设计的:cin"打断"空白字符上的行,如空格和制表符。

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

这里有一种修复方法:

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

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

您需要添加两个标题才能编译:

#include <string>
#include <iostream>

>>读取单个单词。您希望getline读取整行:

cin.getline(str, sizeof str);

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

string str;
getline(cin, str);