字符串转换为矢量
String into vector
我有一个字符串,然后我想将其存储在矢量中
string a = "NnTn";
在每一个新的细胞系之后在不同的细胞中。
std::string ss (".V/n.F/n.R/n");
for(int i = 0; i< ss.size(); i++)
{
test1.push_back(ss);
}
我想将string
存储在vector test1
中这是最好的方式吗?
您的代码无法工作;它将在向量中存储字符串CCD_ 3次。
您可能想要使用字符串流来拆分字符串:
std::stringstream stream(ss);
std::string line;
while (std::getline(stream, line)) {
test1.push_back(line);
}
请注意,换行符将被丢弃。如果你想保留它,push_back(line + "n");
。
Boost::split将为您完成此操作。请参阅此处的用法详细信息:
http://www.boost.org/doc/libs/1_49_0/doc/html/string_algo/usage.html#id3184031
如果可以丢弃换行符,则可以使用std::copy()
:
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <string>
#include <vector>
int main()
{
std::string ss(".V/n.F/n.R/n");
std::istringstream in(ss);
std::vector<std::string> test1;
std::copy(std::istream_iterator<std::string>(in),
std::istream_iterator<std::string>(),
std::back_inserter(test1));
std::for_each(test1.begin(),
test1.end(),
[](const std::string& s)
{
std::cout << s << "n";
});
return 0;
}
输出:
.V/
.F/
.R/
这肯定不是最好的方法,因为它不起作用。这只是在向量中推送std::string
的ss.size()
实例。
可以使用find
和substr
方法对字符串进行分区并将它们推送到数组中。(虽然不打算写实际的代码,但这可能是一个很好的练习)。
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数