使用.get()一次读取一个字节

时间:2016-02-13 22:57:49

标签: c++ file vector while-loop istream

所以我正在读取包含以下内容的输入文件:

 theEvents = new ArrayList<Event>();
    requestQueue = Volley.newRequestQueue(getActivity());
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
            (Request.Method.GET, urlService, null, new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {

                    try {


                        id = response.getString(Config.KEY_ID); // response is now the actual object called "result" from your JSON data.
                          // do something with the ID
                        }
.........etc

我需要一次使用二进制一个字节来读取它,以便稍后我正在做的事情。要做到这一点,我使用=SUMPRODUCT(Test!F2:F12,Rates!C2:C12) 来读取它,然后将其存储到char中。除了它读入的最后一个char之外,它似乎正常工作。它正在读取的向量包含:

lololololololol

我不太清楚最后一个值是什么,但它完全抛弃了我的最终输出。所以我的问题是,是否有get()从我的文本文档中读取值或字节的原因不存在?或者是在阅读我不知道的东西?

代码:

lololololololol
�

1 个答案:

答案 0 :(得分:3)

正在阅读EOFend of file)字符。您需要在之后检查以避免将其插入向量:

while(temp = istr.get(), istr.good()) // comma operator
    input.push_back(temp);

或者您可以使用第二个std::istream_base::get overload并让istr隐式转换为bool

while(istr.get(temp))
    input.push_back(temp);

或尝试more advanced approachesoperator>>std::getline也适用于此类输入。