将字符串::迭代器转换为标准::字符串
Convert string::iterator to std::string
现在这对我来说有点令人困惑,但是std::string::iterator实际上会产生一个字符(如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);
}
}
我正在使用启用了 C++11 的 gcc 5.4.0。
编辑:因为这需要进一步澄清我想将*it转换为字符串。所以我可以使用当前迭代的字符作为字符串,而不是字符。正如我在上面的代码示例中的失败示例所示,我正在寻找类似的东西
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>
演示
您可以声明字符串,稍后可以使用它来将 *it 存储到该字符串中,并且可以在任何地方将其用作字符串。
std::string el;
list <std::string> :: iterator it;
for(it = variableOrder.begin(); it != variableOrder.end(); it++){
el = *it;
cout << el << endl;
}
相关文章:
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 如何在 C++11 中将标准::字符串转换为标准::u32字符串?
- 从标准::字符串到标准::矢量<bool>的快速转换
- 使用标准库计算字符串中的十进制数
- 如何初始化一个标准::字符串数组?
- C++ - 转换标准::浮点数组的字符串
- 连接和压缩标准::vector<std::字符串的最佳方法>
- 在命名管道中发送标准::字符串流
- 标准::字符串与空字符可能吗?
- 如何从标准::string_view正确创建标准::字符串?
- 从常量字符*、字符*参数到标准::字符串的直接转换接口
- 热将标准::__cxx11::字符串转换为标准::字符串
- 如何将字符*浅复制到标准::字符串?
- 十进制到八进制递归C++.以标准::字符串格式输出
- 对于C字符串,是否有一个标准的C++迭代器
- C++17 编解码器在将标准::字符串转换为标准::字符串时抛出"bad conversion"
- 常量转发引用给出错误 C2440:"正在初始化":无法从"常量标准::字符串"转换为"常量标准::字符串 &&"
- 将来C++的标准库会包含网络、字符串算法,..吗?
- 分段错误标准::矢量<标准::字符串>
- 如何通过标准字符串打印 ostream 变量的值?