将指针与getline()函数一起使用

use of pointer with getline() function

本文关键字:函数 一起 指针 getline      更新时间:2023-10-16
char *p;
cout << "Enter the string and press ENTER: ";
cin.getline(p,delimiter);

此代码应该如何工作,例如从编译器的角度来看。我的意思是字符指针应仅具有一个字符,但是当我运行此代码时,字符需要到定界符。在这里,定界符可能是任何INT。 EX-2,10,1200

它应该显示编译器错误,您没有将内存分配给炭指针,但它编译了

应该显示编译器错误,您没有将内存分配给 炭指针,但它编译

编译器通常无法做到这一点。考虑您对您的示例的改编:

int size;
std::cin >> size;
char *p = new char[size];
cout << "Enter the string and press ENTER: ";
cin.getline(p,delimiter);

在这里您可以分配内存,但是直到程序运行并输入了一些数字,才知道多少。

如果您想在C 中发展,则必须了解未定义的行为是编程错误的有效,常见和风险的结果。

您假设编译器可以或应该找到所有错误在C 的世界中既不正确也不理想。

应对这一现实的方法包括:

  • 谨慎。
  • 启用更多编译器警告。
  • 不要忽略编译器警告。
  • 更喜欢安全的标准组件,例如std::getlinestd::string,它们的产生不确定的行为的方法较少。
  • 经常使用assert
char *p;
cout << "Enter yes or no ";
cin >> p;

这就是您获得char的方式。

至于您的问题,以这种方式考虑,如果您使用的是getLine(),那么您正在阅读给定界符的整个行。您没有指定如果输入中不存在白空间定界符,则要读取哪个char

如果您想在输入中找到字符,则可以使用查找功能或getLine(p,"insert char you are looking for here",或者想要第一个char,则有一个内置的find_first_of function