C++ 如果未在.txt文件中声明,则使用ifstream指定默认值

C++ 如果未在.txt文件中声明,则使用ifstream指定默认值,c++,string,stream,ifstream,ofstream,C++,String,Stream,Ifstream,Ofstream,请您帮助修改以下代码以添加两个内容: 如果.txt文件中没有i,则能够将手动(默认)值分配给a[i](例如,文本文件中的第一行是0,0,40,15第四个元素,在这种情况下,我希望在代码中手动分配它,例如70) 让代码不仅读取数字,还读取字符串(处理数字和字符串,例如0,0,8,“右转”,4) 你一个问题也没问。给你一个开始:@WhozCraig我刚问了modify@Scheff谢谢你的演示,你能帮我把这个应用到问题中的代码上吗“手动”是什么意思?手动输入(又称来自std::cin)?或者,默认值

请您帮助修改以下代码以添加两个内容:

  • 如果
    .txt
    文件中没有
    i
    ,则能够将手动(默认)值分配给
    a[i]
    (例如,文本文件中的第一行是
    0,0,40,15
    第四个元素,在这种情况下,我希望在代码中手动分配它,例如70)
  • 让代码不仅读取数字,还读取字符串(处理数字和字符串,例如
    0,0,8,“右转”,4

  • 你一个问题也没问。给你一个开始:@WhozCraig我刚问了modify@Scheff谢谢你的演示,你能帮我把这个应用到问题中的代码上吗“手动”是什么意思?手动输入(又称来自
    std::cin
    )?或者,默认值写在你的程序中?你没有问任何问题。给你一个开始:@WhozCraig我刚刚问了modify@Scheff谢谢你的演示,你能帮我把这个应用到问题中的代码上吗“手动”是什么意思?手动输入(又称来自
    std::cin
    )?或者,在程序中写入默认值?
        struct Number
        {
           double value;
           operator double() const { return value; }
        };
        std::istream& operator >>(std::istream& is, Number& number)
        {
             is >> number.value;
             // fail istream on anything other than ',' or whitespace
             // end reading on ',' or '\n'
            for (char c = is.get();; c = is.get()) {
                if (c == ',' or c == '\n')
                    break;
                if (std::isspace(c))
                    continue;
        
                is.setstate(std::ios_base::failbit);
                break;
            }
             return is;
        }
        
        
        //reading from text file
        static std::vector<double> vec;
        double a[18]; //values got read from txt file
        int i=0;
        void readDATA(){
        Number value;
        std::ifstream myFile;
        myFile.open("waypoints_cordinates.txt", std::ios::app);
        if (myFile.is_open()){
            std::cout << "File is open."<<std::endl;
            while(myFile >> value){
                vec.push_back(value);
                std::cout << "value is " <<value<< std::endl;
                a[i]=value;
                std::cout << "a" << i << "=" << a[i] << std::endl;
                i=i+1;
                }
            myFile.close();
        }
        else std::cout << "Unable to open the file";
        }
    
    0, 0, 40, 45, 15
    0, 1, 40, -45, 10
    0, 0, 180, 90, 15