gpt4 book ai didi

c++ - 迭代器访问冲突的原因及解决方案

转载 作者:行者123 更新时间:2023-11-28 00:01:50 25 4
gpt4 key购买 nike

为什么尝试从迭代器输出 TCHAR[] 会导致访问冲突,我该如何补救并继续使用迭代器?我不明白出了什么问题?

struct FileInfo
{
TCHAR path[MAX_PATH];
};

void iter()
{
std::vector<FileInfo> v;

for (int i = 0; i < 5; i++)
v.push_back({ _T("abc") });

for (int i = 0; i < v.size(); i++) {
OutputDebugString(_T("Ok "));
OutputDebugString(v[i].path);
OutputDebugString(_T("\n"));
}

for (auto it = v.begin(); it != v.end(); it++){
OutputDebugString(_T("Bad "));
OutputDebugString((LPTSTR)*it->path); // CAUSES runtime error here
OutputDebugString(_T("\n"));
}
}

最佳答案

*it->path 计算为 TCHAR,而不是 TCHAR*

TCHAR 转换为 LPTSTR 是不正确的。将 TCHAR* 转换为 LPTSTR 即可。

您可以使用:

OutputDebugString((LPTSTR)it->path);

OutputDebugString((LPTSTR)(*it).path));

关于c++ - 迭代器访问冲突的原因及解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320927/

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