C++;使用共享ptr的输入输出 我学习C++简单的输入和输出一些文本,但是它似乎是死因循环的原因,任何建议都是非常感谢的。p> #include <iostream> #include <string> #incl

C++;使用共享ptr的输入输出 我学习C++简单的输入和输出一些文本,但是它似乎是死因循环的原因,任何建议都是非常感谢的。p> #include <iostream> #include <string> #incl,c++,std,shared-ptr,ifstream,C++,Std,Shared Ptr,Ifstream,C++;使用共享ptr的输入输出 我学习C++简单的输入和输出一些文本,但是它似乎是死因循环的原因,任何建议都是非常感谢的。p> #include <iostream> #include <string> #include <fstream> #include <memory> using namespace std; int main(int argc, const char * argv[]) { std::share

C++;使用共享ptr的输入输出 我学习C++简单的输入和输出一些文本,但是它似乎是死因循环的原因,任何建议都是非常感谢的。p>
#include <iostream>
#include <string>
#include <fstream>
#include <memory>
using namespace std;

int main(int argc, const char * argv[])
{
    std::shared_ptr<std::string> fileName(new std::string);
    bool validFileName = false;
    bool quit = false;
    while (!quit)
    {
        while (!validFileName)
        {
            std::cout << "Please enter text file to out print ots content" << std::endl;
            std::cin >> (*fileName);
            validFileName = !(fileName->find(".txt") == std::string::npos);
            quit = fileName->compare("q") == 0;
            if (quit)
            {
                continue;
            }
        }

        std::shared_ptr<std::ifstream> reader(new std::ifstream);
        reader->open(*fileName);
        if (reader->is_open()){
            while (!reader->eof()){
                std::shared_ptr<std::string> line(new std::string);
                getline(*reader, *line);
                std::cout << *line << std::endl;
            }
            reader->close();
        }
        else {
            throw std::exception();
        }

    }
    std::cout << "Bye" << std::endl;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main(int argc,const char*argv[]
{
std::shared_ptr文件名(新std::string);
bool validFileName=false;
bool-quit=false;
而(!退出)
{
而(!validFileName)
{
std::cout(*文件名);
validFileName=!(文件名->查找(“.txt”)==std::string::npos);
退出=文件名->比较(“q”)==0;
如果(退出)
{
持续
}
}
std::共享ptr读卡器(新std::ifstream);
读卡器->打开(*文件名);
如果(读卡器->处于打开状态()){
而(!reader->eof()){
std::shared_ptr行(新std::string);
getline(*读卡器,*行);

std::cout Check out:这个问题有点离题,但是你应该尽可能使用自动变量,而不是像java那样用new做任何事情。也就是说,写
std::string文件名;
而不是
std::shared_ptr文件名(new std::string)
,等等。哈哈,我喜欢这样。
如果退出,那么继续