C++ 有没有一种方法可以用“读取”来读取输入字符串;ifstream";

C++ 有没有一种方法可以用“读取”来读取输入字符串;ifstream";,c++,string,file,format,ifstream,C++,String,File,Format,Ifstream,目前,我的程序将字符串作为输入,我使用argc和argv 然后我用 FILE *fp, *input = stdin; fp = fopen("input.xml","w+b"); while(fgets(mystring,100,input) != NULL) { fputs(mystring,fp); } fclose(fp); 我做这部分只是为了创建一个文件input.xml,然后将其提供给 ifstream in("input.xml")

目前,我的程序将字符串作为输入,我使用
argc和argv

然后我用

FILE *fp, *input = stdin;
fp = fopen("input.xml","w+b");
    while(fgets(mystring,100,input) != NULL)
    {
        fputs(mystring,fp);
    }
    fclose(fp);
我做这部分只是为了创建一个文件input.xml,然后将其提供给

ifstream in("input.xml");
    string s((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>());
ifstream-in(“input.xml”);
字符串s((std::istreambuf_迭代器(in)),std::istreambuf_迭代器();
s
作为字符串(基本字符串)获取。
有没有办法将我的输入直接输入到
ifstream
?(即将字符串馈送到
ifstream
)。

让我直说:

  • 从标准输入读取字符串
  • 你把它写进一个文件
  • 然后从文件中读取它
  • 并使用文件流对象创建字符串
  • 那真是胡说八道

    删除文件流,直接从STDIN实例化字符串:

    string s(
       (std::istreambuf_iterator<char>(std::cin)),
       std::istreambuf_iterator<char>()
    );
    
    字符串s(
    (std::istreambuf_迭代器(std::cin)),
    std::istreambuf_迭代器()
    );
    
    请记住,
    std::cin
    是一个
    std::istream
    ,标准库的IOStreams部分是为这种数据的通用访问而设计的


    但是,请注意,如果您正在读取大量数据,这可能是一个问题。

    如果我没有弄错,那么您希望将通过标准输入提供的所有文本读取到字符串中

    实现这一点的一个简单方法是使用
    std::getline
    ,它将特定分隔符之前的所有字节读入字符串。如果您可以假定它是文本内容(不包含任何
    \0
    -字符),则可以编写以下内容:

    std::string s;
    std::getline(cin,s,'\0');
    

    否,
    ifstream
    设计用于读取文件。如果要将
    std::string
    作为
    istream
    提供,则可以使用。完全不清楚您要的是什么。您是将字符串作为程序的参数读取,还是将文件内容读入
    std::string
    ?在下面的回答中,我完全忽略了您提到的
    argc
    argv
    ,这似乎毫无意义。@user0042我将其作为程序的参数获取。