c++ - 为什么 std::cin 字符串输入要求我输入每个空格

标签 c++

这周我开始用 C++ 研究一个文本文件,在我的练习中我必须编写一个程序让用户在文件中输入行,但是......对于用户输入的每个空格,程序会询问新的给用户。

这是我的代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(void){
    ofstream myfile;
    string answer;

    do{
        cout << "Insert a line in the file[END to finalize]: ";
        cin >> answer;
        myfile.open("example.txt");
        myfile << answer;
        myfile.close();
    }while(answer != "END");
}

结果是:

Insert a line in the file[END to finalize]: Hello my friend

Insert a line in the file[END to finalize]: Insert a line in the file[END to finalize]: Insert a line in the file[END to finalize]:

最佳答案

operator>>(istream&, string&)基本上捕获下一个词。如果你想捕获整行,试试std::getline(std::cin, answer); .

getline不过,不会包括换行符。这意味着你必须做类似 myfile << answer << '\n'; 的事情将它们输出为行。

顺便说一句,在大多数情况下,您想要在循环外打开文件,或者打开它以附加类似 myfile.open("example.txt", ios::app); 的内容。 .每次都像你一样在循环中打开文件,我很确定你将文件指针放在文件的开头,所以你写的每一行都会至少覆盖前一行的第一部分。

关于c++ - 为什么 std::cin 字符串输入要求我输入每个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708239/

相关文章:

c++ - SQLite 无法在 Win98 中打开数据库

c++ - AVR 在类构造函数中分配内存

c++ - 在 C++ 中运行经过训练的 tensorflow 模型

c++ - 预处理器指令后的意外标记 - 需要换行符

c++ - 在 OSX 上使用 QtCreator 调试失败

c++ - 当容器中的基本元素是 boost::tuple 时,为什么我不能使用 std::find?

c++ - 我可以在成员函数上使用 boost::enable_if 吗?

c++ - 在处理 winapi 时,python ctypes 是否与 c++ 不同?

c++ - 谷歌测试框架 - 测试用例之间的依赖关系

c++ - 变量可以同时声明为静态和外部吗?