stringからint型へ(c++)
Arduinoでgpsのログを取り込むためのプログラムのプロトタイプ
stringで、かつ','で区切られて送られてくるgpsのログをint型に分解して読み取る。
>|cpp|
#include<iostream>
#include<cstdio>
#include<fstream>//For ifstream
#include<cstring>
#include<cstdlib>
#include<sstream>
using namespace std;
using std::stringstream;//namespace("std::")を省略できるように
<||
struct indata{
string data1;
string data2;
string data3;
};
int main(void){
ifstream ifs("in");
//inの中身
/*
111,222,333
222,222,333
333,222,333
*/
string templ;
indata data;
//String to Int
stringstream ss1,ss2,ss3;
string s1,s2,s3;
int hoge1,hoge2,hoge3;
/*
cin >> s1 >> s2 >> s3;
ss << s1;
ss >> hoge;
cout << hoge << endl;
*/
while(1){
if(!getline(ifs,templ))break;
//','を空白に置換
replace(templ.begin(),templ.end(),',',' ');
//分解
stringstream buf(templ);
//読み取り
if(buf>>data.data1 >> data.data2 >>data.data3){
//cout << data.data1 << data.data2 << data.data3 << endl;
ss1 << data.data1;
ss2 << data.data2;
ss3 << data.data3;
ss1 >> hoge1;
ss2 >> hoge2;
ss3 >> hoge3;
cout << hoge1 << " " << hoge2 << " " << hoge3 << endl;
ss1.clear();
ss2.clear();
ss3.clear();
}
}
return 0;
}
||<