gpt4 book ai didi

c++ - 测试 std::wstring 的长度时出现段错误

转载 作者:行者123 更新时间:2023-11-28 03:34:42 30 4
gpt4 key购买 nike

我只是不明白。我有一个函数可以从列表中读取词干字符串,检查每个字符串是否包含标点符号,并在单个单词图像的循环中构建短语。当我在 if 语句中检查字符串构建/包含带有 s.length() > 0 的短语时,我遇到了段错误。这是函数:

std::wstring
Phrase::userFriendlyTerms() {
std::wstring s = L"";

List<Object> *terms = getTerms();

Iterator<Object> *i = terms->iterator();
for (; i->hasNext();) {
StemmedTerm *t = (StemmedTerm *) i->next();
std::wstring image = t->getTerm();

// --- gdb shows me a seg. fault with s.length()
if (s.length() > 0 &&
!((image.compare(L",") == 0) || (image.compare(L"?" == 0))
|| (image.compare(L"!") == 0)
|| (image.compare(L";") == 0))) {
s.append(L" ");
}
s.append(image);
}
delete i;

return s;
}

准确的错误信息是:

Program received signal SIGSEGV, Segmentation fault.
__wcslen (s=0x0) at wcslen.c:30
30 wcslen.c: No such file or directory.
in wcslen.c
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) n
Program not restarted.
(gdb) backtrace
#0 __wcslen (s=0x0) at wcslen.c:30
#1 0x00007ffff7b89e56 in std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::compare(wchar_t const*) const () from /usr/lib/libstdc++.so.6
#2 0x00000000004833ed in Phrase::userFriendlyTerms (this=0x1425ac0) at algorithm/Phrase.cpp:56

也许我瞎了或者漏掉了什么...

感谢您的帮助!

最佳答案

这里看起来很可疑

(image.compare(L"?" == 0)

你确定你不是那个意思

(image.compare(L"?") == 0)

关于c++ - 测试 std::wstring 的长度时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339806/

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