【C++】複数ファイル && Vector入出力
入出力でつまづいた
csvファイルから読み込んだ値をvectorに入れようと思ったら、意外とめんどくさかった。
あとは、以下の点で地味につまづいた。
・複数ファイルに分けたコードの実行が久々だった
・Vectorの受け渡しがよく考えたら参照渡しでないといけなかった
main.cpp
#include <fstream> #include <string> #include <sstream> #include <vector> #include <iostream> #include "sub.h" std::vector<std::string> split(std::string& input, char delimiter) { std::istringstream stream(input); std::string field; std::vector<std::string> result; while (getline(stream, field, delimiter)) { result.push_back(field); } return result; } int main() { int n = 4; std::ifstream ifs("data.csv"); std::string line; std::vector<int> v; while (std::getline(ifs, line)) { std::vector<std::string> strvec = split(line, ','); for (int i=0; i<strvec.size();i++){ v.push_back(std::stoi(strvec[i])); } } for(auto itr=v.begin(); itr<v.end(); itr++){ std::cout << *itr << std::endl; } numnum(v, n); for(auto itr=v.begin(); itr<v.end(); itr++){ std::cout << *itr << std::endl; } }
sub.cpp
#include <vector> #include <iostream> void numnum(std::vector<int> &v, int n){ std::vector<int>* cpv = &v; // アドレスコピー for(int i = 0; i < (*cpv).size(); ++i){ (*cpv)[i] += n; } }
sub.h
#ifndef STUDY_TEST_SUB_H #define STUDY_TEST_SUB_H void numnum(std::vector<int> &v, int n); #endif //STUDY_TEST_SUB_H