を再利用したときに、私はこのようになりますtrajectory.txt
名付け(以下簡体字)、単純なファイルを読み込むしようとしている壊れるその後、一行のために働きますいくつかの変数の最初の2行。にstringstreamは
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
int main(int argc, char** argv)
{
int num_waypoints=0;
bool pos=1, vel=0, acc=0;
std::ifstream file;
std::string filename = "trajectory.txt";
file.open(filename.c_str());
std::string line;
// Read first 2 lines
if (std::getline(file, line)) {
//sstream for each line
std::stringstream ss(line);
//first line
std::string pos_str, vel_str, acc_str;
ss >> pos_str >> vel_str >> acc_str;
//evaluate
(pos_str == "true" ? pos = true : pos = false);
(vel_str == "true" ? vel = true : vel = false);
(acc_str == "true" ? acc = true : acc = false);
//second line
if (std::getline(file, line)) { //GDB confirms, line == "2"
std::string num_waypoints_str;
ss >> num_waypoints_str; //THIS DOES NOTHING?
num_waypoints = stoi(num_waypoints_str);
}
} //main()
問題がにstringstreamは値を読み込むことになった後、最後の行に2番目に、num_waypoints_str
を空のままにされていることです。
GDBを使用して、stringstreamが "2"の値を実際に取ったことを確認できましたが、num_waypoints_strに値を送るのに問題があるようです。
- がなぜにstringstreamを文字列にその値を渡しません:
従って私は2つのだけ質問がありますか?
- 文字列の値を評価することによって、文字列
pos
に直接行1を入力するか、文字列pos_str
からpos
に変換する必要がありますか?
私はg++ -g -std=c++11 main.cpp -o main
でコンパイルしています。問題を再現してみてください。私は何かが簡単でないと感じています。
"GDBは、行==" 2 ""で、行は= ssであることを確認します。ストリーム 'ss'には、コンストラクタに渡した行が含まれています。最初の行は読み込みますが、その後は' ss'の内容を変更しませんが、 'getline'で読み込んだ行'ss'にはありません) – user463035818
' ss'に新しい行を入れるには、 'ss.str(line)'にそれを与えなければなりません。あなたの心を読んでそれをコピーすることはありません。 – spectras