首页 > 解决方案 > 为什么指向字符串的指针给了我空白输出

问题描述

我在 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;
}

标签: c++

解决方案


本地缓冲区char *u;尚未初始化,可能会导致 SEGV 崩溃,因为调用getline会导致写入 u 中存储的地址,现在是一个随机值。

最好使用替代std::getlinestd::string作为目标字符串类型,然后我们读取任意长度的字符串(我们避免缓冲区溢出和其他类型的内存问题):


#include <iostream>

int main() {
  std::string line;
  std::getline(std::cin, line);
  std::cout << "well " << line;
  return 0;
}

推荐阅读