0

我正在尝试将 cin 命令设置的字符串写入文件。我让它工作了,但它并没有写出所有的字符串;只是第一个空白之前的所有内容。所以有人建议我使用:

Write_Test << getline( Text , cin );

让它接受空格,但正如标题所说我不能使用getline?

所有代码:

string Text;
        cout << "Write something: ";
        cin >> Text;
        if (Text != "")
        {           
            ifstream Write_Test("Write_Test.txt");//Creating the file       
            //Write_Test << Text;       //Write a message to the file.
            Write_Test << getline( Text , cin );
            Write_Test.close();                 //Close the stream, meaning the file will be saved.     
            cout << "Done!";
        }

谢谢你的帮助!

4

1 回答 1

2

首先,你可能打算写

std::getline(std::cin, Text)

此表达式采用 anstd::istream&并返回 this std::istream&。假设你得到getline()正确的论点,表达式

out << std::getline(std::cin, Text)

实际上将流状态写入std::cinto out。这可能是您想要的,但我的猜测是您实际上打算使用

if (std::getline(std::cin, Text)) {
    WriteTest << Text;
}

这应该写一行从std::cinto读取的文本WriteTest

一个完整的程序看起来像这样:

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

int main()
{
    std::ofstream out("WriteTest.txt");
    if (!out) {
        std::cout << "Error: failed to open output file\n";
        return EXIT_FAILURE;
    }
    std::string text;
    if (std::getline(std::cin, text)) {
        out << text << '\n';
    }
    else {
        std::cout << "Error: failed to read a line\n";
}
于 2013-09-20T18:06:33.520 回答