c++ - 为什么指向字符串的指针给了我空白输出
问题描述
我在 vs 代码中运行它。它只是接受输入,然后终止。输出为空白。
这是输出
///
PS D:\c++\string> cd "d:\c++\string" ; if ($?) { g++ chararray.cpp -o chararray } ; if ($?) { .\chararray }
呜呜呜
///
继承人的代码。
#include <iostream>
using namespace std;
int main()
{
char *u;
cin.getline(u, 19);
cout << "well " << u;
}
解决方案
本地缓冲区char *u;
尚未初始化,可能会导致 SEGV 崩溃,因为调用getline
会导致写入 u 中存储的地址,现在是一个随机值。
最好使用替代std::getline
和std::string
作为目标字符串类型,然后我们读取任意长度的字符串(我们避免缓冲区溢出和其他类型的内存问题):
#include <iostream>
int main() {
std::string line;
std::getline(std::cin, line);
std::cout << "well " << line;
return 0;
}
推荐阅读
- python - Pyomo:如何在 while 循环中创建具有不同名称的变量?
- python - 将字典中的字典中的字典中的浮点数转换为int in 字典中的列表
- python - 为什么我的函数使用局部变量而不是全局变量?
- python - 通过邮递员上传的二进制文件在我的烧瓶应用程序中已损坏
- git - 如何在结帐/克隆中包含被忽略的文件?
- batch-file - 如何删除每行文本的第一个“文本”
- python - pyqtdeploy - 没有这样的文件或目录,构建尝试复制不存在的子目录
- django - 具有两种形式的 Django 视图未发布一个
- rust - 如何使用它们连接的节点迭代 Petgraph 节点的边缘?
- ios - 如何在swift中自动导入依赖框架