次のように記述されたテキストファイルがあります。
1 2 3 7 8 9 13 14 15
x=[1,7,13]
目標は、各列を、y=[2,8,14]
、のような整数の配列にすることz=[3,9,15]
です。
これが私がこれまでに持っているものです...
テキスト ファイルを開き、内容を文字列として読み取ります。
string fileText;
int n;
int result[];
//file open
ifstream input ("input.txt");
//file read
if(input.is_open())
{
for(int i=0; i<n; i++) //n=3 in this case
{
getline(input, fileText);
result = strtok(fileText," "); // parse each line by blank space " ".
//i get various errors here depending on what I try: such as "must be lvalue"
//or a problem converting string to char.
x[i] = result[0];
y[i] = result[1];
z[i] = result[2];
}
}
したがって、私の問題は、テキスト行をスペースで区切られた数値として整数の配列に変換することです。
これは、PHP のような高級言語では非常に単純ですが、C++ では、データ型とメモリの割り当てが複雑になります。
ありがとう
〜
ベクトルなしでこれを行うにはどうすればよいですか?
私が持っていたとしたら: int x*, y*, z*;
次に、変数ポインタごとにメモリを割り当てます。
x = (int*) malloc (n*sizeof(int)); // where n is the number of lines in the text doc.
y = (int*) malloc (n*sizeof(int));
z = (int*) malloc (n*sizeof(int));
ここで、各列を各 x、y、z 整数配列に入れたいと思います。
次のようなことはできますか:
...
std::string line;
int i;
for (int k=0; k<n; k++)
{
while (std::getline (input, line))
{
std::stringstream parse(line);
parse >> i;
x[k] = i;
parse >> i;
y[k] = i;
parse >> i;
z[k] = i;
}
}
今 x = [1,7,13] など。
push_back() メソッドを使用せずにこれを行う方法はありますか? 整数を各配列に読み込みたいだけです。
getNextInt() などを使用しますか?