gpt4 book ai didi

c++ - std::logic_error: basic_string::_s_construct null 无效

转载 作者:太空狗 更新时间:2023-10-29 23:44:30 27 4
gpt4 key购买 nike

我在这个程序中收到 std::logic_error: basic_string::_s_construct null not valid。我该如何解决?我已经尝试过 previously posted solution但自己无法更正。

#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main()
{
stack<string> s;
string temp, exp[] = "abc-+de-fg-h+/*";
string ch1 = 0, ch2 = 0, ch = 0;
int sizeExp = sizeof(exp)/sizeof(*exp);
for(int i=0; i < sizeExp ; i++) {
ch = exp[i];
if (ch == "*" || ch == "/" || ch == "+" || ch == "-") {
if (s.empty() && sizeof(temp) != sizeof(exp)) {
cout << "Error in Expression." << endl;
}
else {
if (sizeof(s.top()) != sizeof(char)){
ch1 = s.top();
s.pop();
ch2 = s.top();
temp = '(' + ch2 + ')' + exp[i] + '(' + ch1 + ')';
s.push(temp);
}
else {
ch1 = s.top();
s.pop();
ch2 = s.top();
temp = ch2 + exp[i] + ch1;
s.push(temp);
}
}
}
else {
s.push(exp[i]);
}
}
cout << temp << endl << "Is your Infix Expression for ";
cout << exp;
return 0;
}

最佳答案

问题在于 std::string str = 0; 类型的语句。这会导致未定义的行为。使用 std::string str = ""; 创建空字符串。

std::string str = 0; 解析为 constructor std::string::string(const char* s, const Allocator& alloc = Allocator())。当 snullptr 时,此构造函数的行为未定义。您的参数 0 被转换为 nullptr

关于c++ - std::logic_error: basic_string::_s_construct null 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054341/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com