值不显示在cout中

时间:2018-07-16 10:27:27

标签: c++ cout

位于“ v =”之后的值不会在以下代码中显示。 让我知道如何解决。

while(getline(ifs,line))
    {
        vector<string> strvec=split(line,',');
        for(int l=0;l<strvec.size();l++)
        {
            cout<<"l="<<l<<"value="<<stoi(strvec.at(l))<<endl;
            unsigned char v;
            v=stoi(strvec.at(l));
            File.write((char *)&v, sizeof(char)); 
            cout<<"v="<<v<<endl;
        }           
    }

1 个答案:

答案 0 :(得分:2)

“ v =”不会显示在代码中,因为v是无符号字符,并且无符号字符的cout行为将显示其ASCII值,并且当它不可打印时,您将得到这些荒谬的问题。因此,您可以将v声明为unsigned int或执行static_cast,如以下示例所示:

#include <iostream>
#include <vector>
int main()
{
  std::vector<std::string> strvec{std::string("10"),std::string("20")};
  for(int l=0;l<strvec.size();l++)
  {

        std::cout<<"l="<<l<<"value="<<stoi(strvec.at(l))<<std::endl;
        unsigned char v;
        v=stoi(strvec.at(l));
        std::cout<<"v="<<static_cast<unsigned>(v)<<std::endl;
  }
  return 0;
}