c++ - 为什么我在 cin 上出现段错误?

标签 c++ segmentation-fault cin

我正在写一个相当简单的练习(家庭作业),大部分都有效,但是它有时在 cin 上出现段错误。这是相关代码。

int main()
{
  std::string str = "";
  std::cout << "Please select the desired operation:\n";
  std::cout << "(A): Generate Decompositions\n";
  std::cout << "(B): Generate Acceptable Compositions from S1.txt and S2.txt\n";
std::cout << "cout"; //debug statement
  std::cin >> str;
std::cout << "cin"; //debug statement
  std::cout << str;
  char resp = str.at(0);
std::cout << "resp"; //debug statement

...
}

我在 std::cin >> str 上遇到段错误(我知道这是因为输出了“调试语句”)。但奇怪的是,我只有在输入“b”时才会得到它。如果我输入“a”或任何以“a”开头的单词,它就可以正常工作。如果我输入 a 或 b 以外的任何字母,或以 a 或 b 以外的任何其他字母开头的任何内容,它都会退出(正如它应该的那样)。但是,如果我输入“b”或任何以“b”开头的单词,它就会出现段错误。每一次。为什么?

最佳答案

I know this because of what "debug statements" are output"

您发布的代码看起来不错。

因为你的输出语句没有<< endl最后,某些输出可能仍会在段错误时被缓冲。写出 endl阻塞直到输出被刷新,所以添加 << endl很可能会帮助您更接近坠机的实际位置。

关于c++ - 为什么我在 cin 上出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227680/

相关文章:

c - 计算文件夹中文件使用的字节数时遇到问题。出现段错误错误

c++ - Qt 可以使用 cin 吗?

c++ - 重载运算符>>

c++ - YUV420p 到 RGB 的转换改变了 U 和 V 值 - iOS Unity3D

C++ - 将 int 转换为 bytes 并编写相应的测试方法

c++ - 当我尝试读取其他 dialog.ui 的空数据时,Qt c++ 读取访问冲突

c++ - TearDown() 和 Setup() 函数有什么好处?

c - 将指针分配给结构 C 时出现段错误

c - 在c中初始化二维数组时出现段错误

c++ - Cin 在 for 循环中使用后被跳过