我正在尝试从一行读取属于结构向量的多个字符串,但该字符串没有空格。 这基本上是我的问题:
档案数据:
G01G02G03G04G05
当我读到它时:
for (int i=0;i<5;i++)
File>>vector.at(i).string
我得到的是矢量中的第一个字符串
G01G02G03G04G05
我宁愿拥有它:
载体(1)= G01;
vector(2)= G02 ......等等
抱歉忘记了一些信息,我在C ++ vs2010中,它总是三个字符长,从G,R,C,D开始
答案 0 :(得分:1)
C ++无法知道你希望它像这样被砍掉;你可以同样想要每个字符在一个单独的字符串中。一串两个字符,......
将其读入一个字符串,然后将字符串剁掉
for (int i = 0; i < 5; i++)
{
std::string bit = instr.substr(i * 3,3);
vec.push_back(bit);
}
答案 1 :(得分:1)
“是的,总是三个字符”
然后它可以看起来如下:
std::vector<std::string> tokens;
std::string line;
if (getline(cin, line)) {
for (size_t i = 0; i < line.size(); i += 3) {
tokens.push_back(line.substr(i, 3));
}
}
答案 2 :(得分:1)
这就是我将子串分割成一个向量的方法:
std::vector<std::string> parseData(const std::string& s)
{
if (s.size() % 3 != 0) {
throw std::runtime_error("incorrect data length");
}
std::vector<std::string> result;`enter code here`
for (size_t i = 0; i <= s.size() - 3; i += 3) {
result.emplace_back(s, i, 3);
}
return result;
}
有关完整的可编辑演示,请参阅coliru。
你可以generalise来支持任何长度的子字符串。