繁体   English   中英

拆分字符串的相同方法但得到不同的结果

[英]Same way to split string but get different result

我正在尝试拆分两个不同的字符串。 我使用相同的方法,但得到不同的结果。 我花了很多时间来寻找问题。 有什么办法可以解决这个问题吗? 谢谢!

  1. 异常结果:
// data = 36191d2a 9.18 1.41
vector<string> SplitRecvData(string data){
   vector<string> words{};
   char delimiter = ' ';
   istringstream iss(data);

   copy(
   std::istream_iterator<string>(iss),
   std::istream_iterator<string>(),
   std::back_inserter(words));
   vector<string> splitData = words;

   for(int i=0;i<splitData.size();i++) {
      cout << "i= " << ", " << splitData[i] << endl;
   }

   return splitData;
}
// Result
i= 0, 36191d2a
i= 1, 9.18
i= 2, 1.41
  1. 不例外的结果:
// data = Hum,Temp,Time
vector<string> SplitSubTopic(string data){
   vector<string> words{};
   char delimiter = ',';
   istringstream iss(data);

   copy(
   std::istream_iterator<string>(iss),
   std::istream_iterator<string>(),
   std::back_inserter(words));
   vector<string> splitData = words;

   for(int i=0;i<splitData.size();i++) {
      cout << "i= " << ", " << splitData[i] << endl;
   }

   return splitData;
}
// Result
i= 0, Hum,Temp,Time

您没有使用定界符,这应该可以工作

istringstream my_stream(data);

// To store the stream string
string token;

size_t pos = -1;

// Traverse till stream is valid
while (my_stream >> token) {

    // If ',' is found then tokenize the string token
    while ((pos = token.rfind(',')) != std::string::npos) {
        token.erase(pos, 1);
    }

    // Print the tokenize string
    cout << token << '\n';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM