wer234 cwx1 20139
asd223 cwx2 09678
sda232 cwx3 45674
ukh134 cwx4 23453
plo209 cwx5 09573
3文字列の配列にデータを読み取るにはどうすればよいですか? 最初の列を1番目の文字列配列に、2番目の列を2番目の文字列配列に、3番目の列を3番目の文字列配列に変換します。 これは私が試したコードですが、最後の配列が行に入ります。ファイルから特定のデータを配列文字列に読み取る方法
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
using namespace std;
int main(){
//load the text file and put it into a single string:
std::ifstream in("test.txt");
std::stringstream buffer;
buffer << in.rdbuf();
std::string test = buffer.str();
std::cout << test << std::endl << std::endl;
//create variables that will act as "cursors". we'll take everything between them.
size_t pos1 = 0;
size_t pos2;
//create the array to store the strings.
std::string str[5];
std::string str2[5];
std::string str3[5];
int x;
int y;
for(y=0; y<5;y++){
for (x=0; x<3; x++){
pos2 = test.find(" ", pos1); //search for the bar "|". pos2 will be where the bar was found.
if(x==0){
str[y] = test.substr(pos1, (pos2-pos1)); //make a substring, wich is nothing more
}else if(x==1){
str2[y] = test.substr(pos1, (pos2-pos1)); //make a substring, wich is nothing more
}else if(x==2){
str3[y] = test.substr(pos1, (pos2-pos1)); //make a substring, wich is nothing more
} //than a copy of a fragment of the big string.
// std::cout << str[x] << std::endl;
// std::cout << "pos1:" << pos1 << ", pos2:" << pos2 << std::endl;
pos1 = pos2+1; // sets pos1 to the next character after pos2.
//so, it can start searching the next bar |.
}
}
for (int p=0; p<5; p++){
cout << str[p] <<endl;
cout << str2[p] <<endl;
cout << str3[p] <<endl;
}
return 0;
}
「演算子>>」を使用するだけです。 – LogicStuff
ifstreamで直接 'operator >>'を使わないのはなぜでしょうか?>> str [y] >> str3 [y]; ' –