繁体   English   中英

将用户输入保存到文本文件 C++

[英]Save user input to a text file c++

我一直在写一个程序来模拟你电脑上的终端。 一种选择是编写一些文本并将其保存到现有的文本文件中,但是我一直无法将整个输入保存到文件中。

这是触发写入文件的原因:

else if(command == "write"){
   ofstream myfile (arg.c_str());
   string writeToFile;
   std::cout << "Opening file '"<< arg.c_str() << "'...\n" << std::endl;
   std::cout << "Plese enter what you want to write into the file:\n" << std::end;

   std::getline(std::cin, writeToFile);

   if (myfile.is_open()){
     myfile << writeToFile << "\n";
     myfile.close();
   }

   std::cout << "You wrote: " << writeToFile << std::endl;
   std::cout << "File succesfully updated. \n" << std::endl;
   commandStart();
 }

但是,当我使用std::getline(std::cin, writeToFile); 这是结果: 使用 std::getline(std::cin, writeToFile);

它不允许我输入任何内容来保存到文件中,并且它会自动关闭,但是,当我使用它时:

else if(command == "write"){
   ofstream myfile (arg.c_str());
   string writeToFile;
   std::cout << "Opening file '"<< arg.c_str() << "'...\n" << std::endl;
   std::cout << "Plese enter what you want to write into the file:\n" << std::end;

   std::cin >> writeToFile;

   if (myfile.is_open()){
     myfile << writeToFile << "\n";
     myfile.close();
   }

   std::cout << "You wrote: " << writeToFile << std::endl;
   std::cout << "File succesfully updated. \n" << std::endl;
   commandStart();
 }

使用std::cin >> writeToFile; 我可以输入一些内容并将其保存到文件中,但它只保存第一个单词:

使用 std::cin >> writeToFile;

为什么会发生这种情况的任何想法? 我已经检查了其他问题和网站,但我无法解决这个问题。

基本上 cout '\\n' 是由您的 getline 函数读取的。 cout() 之后的 std::cin.ignore() 将解决您的问题。

正如 MikeCAT 所提到的, 为什么 std::getline() 在格式化提取后跳过输入? 答案深入解释原因,绝对值得一读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM