将文本段落存储在变量C++中

Store paragraph of text in variable C++

本文关键字:变量 C++ 存储 文本 段落      更新时间:2023-10-16

我正在尝试编写一个程序,该程序接受用户的输入并将整个段落存储在一个变量中。然而,如果用户输入:"你好,这是一些文本。"它只返回"你好"。有人能帮忙吗?

谢谢!

#include <iostream>
#include <iomanip>
using namespace std;
class GetText
{
public:
    string text;
    void userText()
    {
        cout << "Please type a message: ";
        cin >> text;
    }
    void to_string()
    {
        cout << "n" << "User's Text: " << "n" << text << endl;
    }
};
int main() {
    GetText test;
    test.userText();
    test.to_string();
    return 0;
}

您可以使用std::getline从用户输入读取整行:

std::string text;
std::getline(std::cin, text);

现场演示

使用cin获取值时,默认情况下,输入流将空格视为字符串分割分隔符。相反,您应该使用std::getline(),它读取输入,直到检测到换行符。

然而,正如我上面所说,std::getline()读取输入,直到它检测到一个新行字符,这意味着它一次只能读取一行。因此,为了用多行阅读整个段落,您需要使用循环。

#include <iostream>
#include <iomanip>
#include <string> //For getline()
using namespace std;
// Creating class
class GetText
{
public:
    string text;
    string line; //Using this as a buffer
    void userText()
    {
        cout << "Please type a message: ";
        do
        {
            getline(cin, line);
            text += line;
        }
        while(line != "");
    }
    void to_string()
    {
        cout << "n" << "User's Text: " << "n" << text << endl;
    }
     };
     int main() {
    GetText test;
    test.userText();
    test.to_string();
    system("pause");
    return 0;
}

此代码逐行读取流,将当前行存储在字符串变量"line"中。我使用变量"line"作为输入流和变量"text"之间的缓冲区,我使用+=运算符将整个段落存储在其中。它读取输入,直到当前行为空行。