字符串转换为矢量

String into vector

本文关键字:转换 字符串      更新时间:2023-10-16

我有一个字符串,然后我想将其存储在矢量中

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::stringss.size()实例。

可以使用findsubstr方法对字符串进行分区并将它们推送到数组中。(虽然不打算写实际的代码,但这可能是一个很好的练习)。