将向量复制到 std::string
Copying vector to std::string
谁能向我解释为什么下面的代码无法正常工作?没有编译问题,但输出错误。我想问题出在std::inserter
.
程序输出:
预期输出:147497
#include <vector>
#include <string>
#include <algorithm>
int main()
{
std::vector<char> vec;
vec.push_back(1);
vec.push_back(4);
vec.push_back(7);
vec.push_back(4);
vec.push_back(9);
vec.push_back(7);
std::string test;
if (!vec.empty())
{
std::copy(vec.begin(),vec.end(),std::inserter(test,std::end(test)));
}
std::cout << test;
}
您将非可视 ASCII 控制字符插入到向量中。 您需要插入可视 ASCII 字符:
// note the use of single quotes!
vec.push_back('1');
vec.push_back('4');
vec.push_back('7');
vec.push_back('4');
vec.push_back('9');
vec.push_back('7');
char(1)
的数值为 1。char('1')
在 ASCII 中的数值为 49。
此外,由于您要在字符串末尾将字符插入到test
中,请考虑使用std::back_inserter
而不是std::inserter
(无论哪种方式,您都不需要测试vec.empty()
,因为标准算法适用于迭代器范围,其中begin == end
):
std::string test;
std::copy(vec.begin(), vec.end(), std::back_inserter(test));
或者,仅使用将迭代器作为输入的std::string
构造函数:
std::string test(vec.begin(), vec.end());
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- C++:考虑C++ std::string 中双引号 (") 的字面含义,而不使用反斜杠 (\)
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- std::string, std::wstring and UTF8
- uan inplace replacement of std::string/std::wstring?
- #define Glib::string std:wstring
- 从 std::string & std::wstring 中获取 char 整数值
- BSTR转换为std::string(std::wstring),反之亦然