将文本段落存储在变量C++中
Store paragraph of text in variable C++
我正在尝试编写一个程序,该程序接受用户的输入并将整个段落存储在一个变量中。然而,如果用户输入:"你好,这是一些文本。"它只返回"你好"。有人能帮忙吗?
谢谢!
#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"之间的缓冲区,我使用+=运算符将整个段落存储在其中。它读取输入,直到当前行为空行。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- 变量没有改变?通过向量的函数调用