C++程序中未显示完整字符串
Full String is not showing in C++ program
我有下面的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);
相关文章:
- 字符串-C++后显示的随机字符
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 显示字符串的集合和子集
- 在将字符插入 2d 字符串时如何不显示空字符?
- 两个数组,int 和 string,如何显示带有对应 int 的字符串?
- 为什么我的 cout 在输出中没有显示字符串?
- 为什么在为其分配编号后无法显示我的字符串值?
- 分段故障 11,从类函数显示动态 C 字符串
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- 输出显示多个带整数的字符串值
- 字符串显示上的智能感知:npos = 18446744
- 如何从显示板将字符显示为字符串?
- 插入了 C++ 数组字符串数据,但在显示输出时不显示
- 使用宏显示宏的字符串化内容
- 我将如何将数组的显示从数字更改为字符串C++
- 如何让我的构造函数和函数工作,以便我的 main() 能够同时显示字符串和 int 数据
- C 我将如何在字符串中显示字符作为数字
- 如何使用另一个字符串显示三个浮点数的最大值?
- 如何比较"4A4B4C"(字符串显示十六进制值)实际字符串"JKL"