我正在写一个相当简单的练习(家庭作业),其中大部分都有效,但有时会在 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'开头的单词,它就会出现Segfaults。每一次。为什么?