2013-03-21 5 views
-1

я посылаю 6 данных от датчиков с заголовком и хвостом, с (,) между даннымисинтаксического анализа/spliting данные в C++

$data0,data1,data2,data3,data4,data5%. 

Я хочу, чтобы разобрать/сортировку этих данных и стал:

y0=data0 
y1=data1... 

Может кто-нибудь помочь мне дать мне представление, как это сделать? Я использую Visual Studio C++ 2010.

моя программа:

#include <iostream> 
#include <string> 
#include <sstream> 
#include "stdafx.h" 
using namespace std; 

int main() 
    { 
string str = "$data1,data2,data3,data4,data5,data6%"; 
string word; 
stringstream stream(str); 
while(getline(stream, word, ',')) 
cout << word << "\n"; 
} 

значение является

$data1 
data2 
data3 
data4 
data5 
data6% 

как удалить заголовок и хвост, и как сделать данные в буфере

Y1=data1 
y2=data2 
... 
+0

Пожалуйста, после того, что вы пробовали до сих пор. Если вы новичок в программировании, то http://www.cplusplus.com/doc/tutorial/ даст вам хорошую отправную точку. – nonsensickle

+0

см. Edit :) – Limavolt

ответ

0

Этот код показывает, как это можно сделать:

#include <iostream> 
#include <sstream> 
#include <string> 
#include <vector> 

int main() { 
    std::string s("$data0,data1,data2,data3,data4,data5%"); 

    s.erase(0, 1); // Remove header. 
    s.erase(s.size() - 1, 1); // Remove tail. 

    // Parse tokens. 
    std::vector<std::string> tokens; // Vector will store tokens. 
    std::istringstream iss(s); 
    for (std::string token; std::getline(iss, token, ',');) { 
     tokens.push_back(token); 
    } 

    // Output tokens. 
    for (const auto& t : tokens) { 
     std::cout << t << std::endl; 
    } 
} 

Выход:

data0 
data1 
data2 
data3 
data4 
data5 
+0

thx snipes83, как сделать значение data0 равным y0 так y0 = data0 ... – Limavolt

Смежные вопросы