现在这对我来说有点混乱,但是std :: string :: iterator实际上产生了一个char(由typeid显示)。我需要它作为一个字符串。我怎样才能做到这一点?
#include <string>
#include <iterator>
int main(){
std::string str = "Hello World!";
for( std::string::iterator it = str.begin(); it != str.end(); it++ ){
std::string expectsString(*it); // error
std::string expectsString(""+*it); // not expected result
myFunction(expectsString);
}
}
我正在使用gcc 5.4.0启用C ++ 11。
编辑:由于这需要进一步说明,我想将*转换为字符串。所以我可以使用当前迭代的直通字符作为字符串,而不是char。正如上面代码示例中的失败示例所示,我正在寻找类似的东西
std::string myStr = *it; //error
请改用
std::string expectsString(1, *it);
这是一个示范计划
#include <iostream>
#include <string>
int main()
{
std::string str = "Hello World!";
for( std::string::iterator it = str.begin(); it != str.end(); it++ )
{
std::string expectsString( 1, *it );
std::cout << expectsString;
}
std::cout << std::endl;
return 0;
}
它的输出是
Hello World!
std::string expectsString{ *it };
也可以使用范围构造函数从it
构造长度为1的字符串
std::string expectsString(it, it+1);
另一种选择:
std::string expectsString{*it}; // Use initializer_list<char>
std::string expectsString({*it}); // Use initializer_list<char>