gpt4 book ai didi

c++ - 无法从 stringw 转换为 string/char

转载 作者:行者123 更新时间:2023-11-30 02:37:05 28 4
gpt4 key购买 nike

我一直在尝试从 irr::stringw(irrlicht 游戏引擎核心字符串)进行转换,以便我可以简单地在分隔符处分解字符串以创建数组/列表。

但是,我无法从 stringw 转换,它与任何正常函数都不兼容。

所以,要将 stringw 拆分成一个列表,我有以下内容:

vector<stringw> split(stringw str, char delimiter){
vector<stringw> internal;
std::string tok;
std::string std_s(str.c_str(), str.size());

while (getline(std_s, tok, delimiter)) {
internal.push_back(tok);
}
return internal;
}

但是这里的错误是:str.c_str()No instance of constructor "std::basic::string matches argument list. Argument types are (const wchar_t*, irr: u32)

getline 方法上出现错误:没有重载函数“getline”的实例与参数列表匹配。参数类型为:(std::string, std::string, char)。

几个小时以来,我一直在尝试多种方法来将 stringw 拆分为分隔符“;” (分号)但没有任何效果。有什么建议吗?

最佳答案

这里主要有两个问题,第一个是stringw是一个wchar_t字符的字符串。所以我们需要使用 std::wstring facilities避免必须将 wchar_t 转换为 char 或从 char 转换。

我们还需要注意 std::getline 需要从 std::basic_istream 派生的类型因为它是第一个参数。因此,我们可以按如下方式修改您的代码:

vector<stringw> split( stringw str, wchar_t delimiter )
{
vector<stringw> internal;
std::wstring tok;
std::wistringstream std_s( str.c_str() );

while( getline(std_s, tok, delimiter) ) {
internal.push_back(tok);
}
return internal;
}

关于c++ - 无法从 stringw 转换为 string/char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32039091/

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